3 Stimmen

empfohlenen Weg oder Plugin zu Google Sitemaps für Ruby on Rails App erstellen?

Ich habe eine schnelle Google-Suche und nicht sehen, etwas super-groß zu automatisieren Erstellung und Aktualisierung meiner Google-Sitemap für die Ruby on Rails app. Irgendwelche Vorschläge?

5voto

Ich würde wirklich nicht empfehlen, einen Controller zu verwenden und einfach auf ihn zu routen wie '/sitemap.xml', denn wenn Ihre Sitemaps wachsen, wird das Ressourcen verschwenden. Es wäre am besten, einen Rake-Task zu erstellen und die Sitemaps jede Nacht oder so neu zu generieren, je nachdem, wie häufig sich der Inhalt ändert.

Wenn Ihre Website nicht annähernd 50000 Seiten hat und Sie nicht vorhaben, mehr Seiten zu haben, als in eine einzige Sitemap-Datei passen, dann empfehle ich Ihnen, " Google Sitemaps mit Ruby on Rails, Capistrano und Cron " Ich weiß, dass es anständig funktioniert, weil ich es derzeit erfolgreich benutze.

Anmerkung: Ich würde nicht vorschlagen, dass die Autoren die Sitemaps jedes Mal kopieren, wenn die Verteilungsaufgabe ausgeführt wird, da dies meiner Meinung nach nicht sauber ist. Es ist besser, ein gemeinsames Verzeichnis zu verwenden und beim Deployment einen Symlink dorthin zu setzen, dann ist man sicher, dass man nur eine Version der Dateien hat und keinen Platz verschwendet, wenn zusätzliche Kopien zurückbleiben. Ich habe dies in meinem deploy.rb:

desc "Symlink the upload directories"
task :before_symlink do
  run "rm -drf #{release_path}/public/sitemaps"
  run "ln -s #{shared_path}/sitemaps #{release_path}/public/sitemaps"
end

Sie können auch " Große Sitemap "aber ich habe es erst jetzt gefunden und kann nicht sagen, wie gut es ist. Es sieht so aus, als ob es wirklich einfach ist, dieses Gem einzurichten und es verwendet auch Ihre Rails-Routen für die Link-Generierung, so dass Sie ein Problem weniger zu lösen haben als mit der ersten Lösung.

2voto

John Topley Punkte 110122

Ich habe erst kürzlich eine dynamische Sitemap zu einer Blog-Anwendung hinzugefügt. Diese Schritte sollten Ihnen den Einstieg erleichtern.

Fügen Sie diese Route am Ende Ihrer config/routes.rb (spezifischere Routen sollten darüber aufgeführt sein):

map.sitemap '/sitemap.xml', :controller => 'sitemap'

Erstellen Sie die SitemapController (app/controllers/sitemap_controller):

class SitemapController < ApplicationController
  layout nil

  def index
    headers['Content-Type'] = 'application/xml'
    last_post = Post.last
    if stale?(:etag => last_post, :last_modified => last_post.updated_at.utc)
      respond_to do |format|
        format.xml { @posts = Post.sitemap } # sitemap is a named scope
      end
    end
  end
end

-Wie Sie sehen können, ist dies für einen Blog, so ist die Verwendung eines Post Modell.

Dies ist die Ansichtsvorlage (app/views/sitemap/index.xml.builder):

base_url = "http://#{request.host_with_port}"
xml.instruct! :xml, :version=>'1.0'
xml.tag! 'urlset', 'xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9' do
  for post in @posts do
    xml.tag! 'url' do
      xml.tag! 'loc', "#{base_url}#{post.permalink}"
      xml.tag! 'lastmod', post.last_modified
      xml.tag! 'changefreq', 'monthly'
      xml.tag! 'priority', '0.5'
    end
  end
end

Das war's! Sie können es testen, indem Sie Folgendes aufrufen http://localhost:3000/sitemap.xml (bei Verwendung von Mongrel) in einem Browser oder vielleicht mit Hilfe von cURL.

Beachten Sie, dass der Controller die stale? Methode, um eine HTTP 304 Not Modified-Antwort auszugeben, wenn seit der letzten Abfrage der Sitemap keine neuen Einträge vorhanden sind.

0voto

MikeH Punkte 856

Der Google Sitemap Generator ist die offizielle Veröffentlichung von Google. Er ist einfach einzurichten und zu konfigurieren.

http://code.google.com/p/googlesitemapgenerator/

0voto

Karl Varga Punkte 304

Ich würde empfehlen, dass Sie sich die sitemap_generator gem . Es übernimmt all diese Aufgaben für Sie... und wer will sich schon mit der Erstellung von XML herumschlagen?

Hier ist eine Beispiel-Sitemap, um zu zeigen, wie Sie Ihre Rails-Modelle und Pfad-Helfer verwenden, um Ihre Sitemap-URLs zu generieren:

# config/sitemap.rb
SitemapGenerator::Sitemap.default_host = "http://www.example.com"
SitemapGenerator::Sitemap.create do
  add '/contact_us'
  Content.find_each do |content|
    add content_path(content), :lastmod => content.updated_at
  end
end

Dann verwenden Sie Rake-Tasks, um die Daten so oft zu aktualisieren, wie Sie möchten. Es ist wirklich so einfach :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X