Aggiungi questo percorso verso la parte inferiore del file config/routes.rb
(percorsi più specifici devono essere elencati sopra di esso):
map.sitemap '/sitemap.xml', :controller => 'sitemap'
Creare il 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
— Come potete vedere, questo è per un blog, quindi sta usando un modello Post
. Questo è il modello HAML vista (app/views/mappa del sito/index.xml.haml):
- base_url = "http://#{request.host_with_port}"
!!! XML
%urlset{:xmlns => "http://www.sitemaps.org/schemas/sitemap/0.9"}
- for post in @posts
%url
%loC#{base_url}#{post.permalink}
%lastmod=post.last_modified
%changefreq monthly
%priority 0.5
Questo è tutto! Puoi testarlo sollevando http://localhost:3000/sitemap.xml (se usi Mongrel) in un browser, o magari usando cURL.
Si noti che il controller utilizza il metodo stale?
per emettere una risposta HTTP 304 non modificata se non ci sono nuovi post sinceri che l'ultima è stata richiesta.
fonte
2010-01-16 14:46:51
Grazie per la tua domanda, mi sono incuriosito sulle sitemap e ho scoperto molte (altre) cose per migliorare il mio sito rispetto a Google – Veger