Fichiers requis lors de l'enregistrement d'un site avec des moteurs de recherche tels que Google et Yahoo. Celui qui vous est demandé dans la Search Console (service d'inscription à la recherche Google). Le contenu contient principalement des informations sur la page que vous souhaitez afficher dans la recherche.
Ajouté à Gemfile
. * Github est ici
Gemfile
gem 'sitemap_generator'
Installez gem
$ bundle install
Exécutez la commande suivante pour générer config / sitemap.rb
.
$ rails sitemap:install
Modifiez le fichier config / sitemap.rb
généré.
SitemapGenerator :: Sitemap.default_host
contient l'hôte de production.
Dans SitemapGenerator :: Sitemap.create
, décrivez la page que vous souhaitez enregistrer pour la recherche.
config/sitemap.rb
require 'rubygems'
require 'sitemap_generator'
SitemapGenerator::Sitemap.default_host = "http://www.example.com"
SitemapGenerator::Sitemap.create do
add '/', changefreq: 'weekly', priority: 0.9
add '/about', changefreq: 'weekly', priority: 0.5
User.all.each do |user|
add user_path(user), lastmod: spot.updated_at
end
end
Essayez de l'exécuter localement.
$ rails sitemap:refresh
Les mises à jour et les notifications du plan du site sont envoyées aux moteurs de recherche.
Si vous ne souhaitez pas avertir le moteur de recherche, ajoutez no_ping
.
$ rails sitemap:refresh:no_ping
Lorsque vous l'exécutez, vous pouvez voir que public / sitemap.xml.gz
est généré.
Il peut être téléchargé depuis http: // localhost: 3000 / sitemap.xml.gz.
Puisque sitemap.xml.gz
doit être mis à jour chaque fois qu'un utilisateur est créé, il est périodiquement exécuté tous les jours avec une tâche cron
.
Ajout d'un point de terminaison pour cela.
cron_jobs_controller.rb
class CronJobsController
def refresh
logger.info `bundle exec rails sitemap:refresh`
head :ok
rescure StandardError => e
logger.error e.full_message
head :internal_server_error
end
end
routes.rb
Rails.application.routes.draw do
...
resources :sitemaps, only: [:index]
end
Ajout de paramètres à cron.yaml
.
cron.yaml
cron:
- description: sitemap
url: /cron_jobs/sitemaps
timezone: Asia/Tokyo
schedule: every day 03:00
Déployez les paramètres pour les tâches cron
.
$ gcloud app deploy cron.yaml --project=target-project
Ceci complète les paramètres pour l'exécution périodique par les tâches cron
.
GAE dans l'environnement de production gère 3 instances pour la montée en charge. Par conséquent, si un fichier est généré dynamiquement et placé dans une instance, le fichier ne touchera que 1/3 de chance.
En premier lieu, c'est un anti-pattern pour mettre le fichier généré dans l'instance sous l'environnement PaaS
.
Il est bon de télécharger sur un stockage externe (GCS).
Il n'y a aucun problème si vous utilisez Computed Engine
, etc.
Ajoutez les paramètres GCS à config / sitemap.rb
comme décrit dans la documentation sitemap_generator
.
SitemapGenerator::GoogleStorageAdapter Uses Google::Cloud::Storage to upload to Google Cloud storage. You must require 'google/cloud/storage' in your sitemap config before using this adapter. An example of using this adapter in your sitemap configuration with options:
by https://github.com/kjvarga/sitemap_generator#upload-sitemaps-to-a-remote-host-using-adapters
config/sitemap.rb
require 'rubygems'
require 'sitemap_generator'
require 'google/cloud/storage'
SitemapGenerator::Sitemap.default_host = ENV['BASE_URL']
SitemapGenerator::Sitemap.sitemaps_host = "https://storage.googleapis.com/#{ENV['GOOGLE_BUCKET']}"
SitemapGenerator::Sitemap.adapter = SitemapGenerator::GoogleStorageAdapter.new(
credentials: ENV['GOOGLE_CREDENTIAL'],
project_id: ENV['GOOGLE_PROJECT_ID'],
bucket: ENV['GOOGLE_BUCKET']
)
SitemapGenerator::Sitemap.create do
add '/', changefreq: 'weekly', priority: 0.9
add '/about', changefreq: 'weekly', priority: 0.5
User.all.each do |user|
add user_path(user), lastmod: spot.updated_at
end
end
Ajout d'un routage pour rediriger vers sitemap.xml
sur GCS lorsque l'accès arrive à https: // domaine / sitemap.xml.gz
.
routes.rb
Rails.application.routes.draw do
...
get '/sitemap.xml.gz', to: redirect("https://storage.googleapis.com/#{ENV['GOOGLE_BUCKET']}/sitemap.xml.gz", status: 301)
end
Avec cela, si vous déployez à nouveau l'instance GAE, le paramètre est terminé.
Après avoir exécuté cron job
, vous pouvez télécharger sitemap.xml.gz
en accédant à https: // domaine / sitemap.xml.gz
.
Recommended Posts