Ajouter cet itinéraire vers le bas de votre fichier config/routes.rb
(doivent être énumérés routes plus spécifiques au-dessus):
map.sitemap '/sitemap.xml', :controller => 'sitemap'
Créer l'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
— Comme vous pouvez le voir, ceci est pour un blog, donc utilise un modèle Post
. Ceci est le modèle de vue HAML (app/views/plan du site/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
Ca y est! Vous pouvez le tester en élevant http://localhost:3000/sitemap.xml (si vous utilisez Mongrel) dans un navigateur, ou peut-être en utilisant cURL.
Notez que le contrôleur utilise la méthode stale?
pour émettre une réponse HTTP 304 non modifiée s'il n'y a aucun nouveau message si le sitemap a été demandé pour la dernière fois.
Merci pour votre question, je me suis intéressé aux sitemaps et a découvert beaucoup de (autres) choses pour améliorer mon site en ce qui concerne Google – Veger