Erforderliche Dateien bei der Registrierung einer Website bei Suchmaschinen wie Google und Yahoo. Diejenige, die in der Suchkonsole (Registrierungsdienst für die Google-Suche) abgefragt wird. Der Inhalt enthält hauptsächlich Informationen zu der Seite, die Sie bei der Suche anzeigen möchten.
Zu Gemfile
hinzugefügt. * Github ist hier
Gemfile
gem 'sitemap_generator'
Installiere gem
$ bundle install
Führen Sie den folgenden Befehl aus, um config / sitemap.rb
zu generieren.
$ rails sitemap:install
Bearbeiten Sie die generierte config / sitemap.rb
.
SitemapGenerator :: Sitemap.default_host enthält den Produktionshost.
Beschreiben Sie in "SitemapGenerator :: Sitemap.create" die Seite, die Sie für die Suche registrieren möchten.
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
Versuchen Sie es lokal auszuführen.
$ rails sitemap:refresh
Sitemap-Updates und Benachrichtigungen werden in Suchmaschinen ausgeführt. Wenn Sie die Suchmaschine nicht benachrichtigen möchten, fügen Sie "no_ping" hinzu.
$ rails sitemap:refresh:no_ping
Wenn Sie es ausführen, können Sie sehen, dass "public / sitemap.xml.gz" generiert wird. Es kann von http: // localhost: 3000 / sitemap.xml.gz heruntergeladen werden.
Da sitemap.xml.gz
jedes Mal aktualisiert werden muss, wenn ein Benutzer erstellt wird, wird es regelmäßig jeden Tag mit cron job
ausgeführt.
Dafür wurde ein Endpunkt hinzugefügt.
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
Einstellungen zu cron.yaml
hinzugefügt.
cron.yaml
cron:
- description: sitemap
url: /cron_jobs/sitemaps
timezone: Asia/Tokyo
schedule: every day 03:00
Stellen Sie die Einstellungen für "Cron-Jobs" bereit.
$ gcloud app deploy cron.yaml --project=target-project
Dies vervollständigt die Einstellungen für die periodische Ausführung durch "Cron-Jobs".
GAE in der Produktionsumgebung verarbeitet 3 Instanzen für das Scale-out. Wenn eine Datei dynamisch generiert und in einer Instanz platziert wird, wird die Datei daher nur mit einer Chance von 1/3 getroffen.
Erstens ist es ein Anti-Pattern, die generierte Datei in der Instanz unter der PaaS-Umgebung abzulegen. Es ist gut, auf externen Speicher (GCS) hochzuladen. Es gibt kein Problem, wenn Sie "Computed Engine" usw. verwenden.
Fügen Sie die GCS-Einstellungen zu config / sitemap.rb
hinzu, wie in der Dokumentation sitemap_generator
beschrieben.
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
Es wurde ein Routing hinzugefügt, um auf GCS zu "sitemap.xml" umzuleiten, wenn der Zugriff auf "https: // domain / sitemap.xml.gz" erfolgt.
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
Wenn Sie die GAE-Instanz erneut bereitstellen, ist die Einstellung damit abgeschlossen. Nachdem Sie "cron job" ausgeführt haben, können Sie "sitemap.xml.gz" herunterladen, indem Sie auf "https: // domain / sitemap.xml.gz" zugreifen.
Recommended Posts