sitemap.xml no Rails

7 de junho de 2009 ~ Tags:,

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.


Posts relacionados:


1 Comentário


Deixe uma resposta






Últimos textos do blog

Tagcloud

abraweb acadêmico actionscript ajax apache apple arteccom asp autosimulado backup benchmark beta bh blogosfera bookmarklet bookmarklets brasil browser censura chucknorris cms codestacker concurso crítica css dashboard deployment desenvolvimento design dicas divinópolis dotmac download dreamhost economia empreendedorismo empreendorismo encontro estatísticas extreme programming feedburner firefox fireworks flash flickr ftp game git globo gmail golive google greasemonkey guerrilha hack host howto htaccess html humor ie inss internet banking iphone ipod is® javascript jquery layout leopard linux listas live locomotive mac meme microsoft miguxês minasonrails mod_rails mp3 msn mysql off tropic opensocial opera orkut oscommerce parser passenger pc personalidade pesquisa php plugin plugins pog portfolio produtividade publicidade rails refurbished regex resenha review ria rss ruby rádio safari sandbox screencast screensaver script.aculo.us seo shoutcast silverlight software spam startup stevejobs suporte swf switch são paulo teste textmate trabalho tumblelog tumblr tutorial twitter ui uml usabilidade validação viral wallop web2.0 webalizer webdesign webdevelopment webkit webmail webmobile webobjects webstandards windows wordpress xml yahoo youtube

Veja todos os textos →