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.

1. 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.

 

Leonardo

Registros de Leonardo Faria sobre desenvolvimento web