sitemap.xml no Rails
Usado para SEO, Sitemaps servem para informar aos sites de busca como indexar as páginas de um site. Indexadores descobrem páginas com base em links no site e outros sites e o que os Sitemaps fazem é complementar esses dados, para permitir que os indexadores com suporte para Sitemaps peguem todos os URLs no Sitemap e aprendam sobre esses URLs usando os metadados associados.
Existem sites para gerar o arquivo, mas fazer isso no Rails não é complicado e faremos isso em 4 passos. A dica vem do Tony no livro Advanced Rails Recipes.
more1. Controller
Crie um controller chamado sitemap:
script/generate controller sitemap
2. Busca das URLs
Crie o método para listar todas as entradas do seu banco:
class SitemapController < ApplicationController
def sitemap
@entries = Model.find(:all, :order => "updated_at DESC", :limit => 50000)
headers["Content-Type"] = "text/xml"
# set last modified header to the date of the latest entry.
headers["Last-Modified"] = @entries[0].updated_at.httpdate
end
end
As entradas do arquivo sitemap.xml são limitadas em seu protocolo em 50000 registros. Você pode se quiser, gerar esse arquivo com as URLs de várias entidades, como o Ilya Grigorik faz em seu artigo.
3. View
Crie o arquivo sitemap.rxml
xml.instruct!
xml.urlset "xmlns" => "http://www.sitemaps.org/schemas/sitemap/0.9" do
@entries.each do |entry|
xml.url do
xml.loc url_for(:controller => 'controller', :action => 'show', :id => entry.id, :only_path => false)
xml.lastmod entry.updated_at.to_date
end
end
end
4. Atualização do arquivo de rotas
Crie a rota para que você tenha o arquivo www.seusite.com.br/sitemap.xml
map.connect 'sitemap.xml', :controller => "sitemap", :action => "sitemap"
Conclusão
Com o arquivo pronto, é só indicá-lo no Google Webmaster e no Yahoo Site Explorer. Caso queira conhecer mais sobre sitemaps, visite essa página do Google.