Diego Plentz

16 Oct, 2005

Better feed’s

Posted by: Diego Plentz In: geek| util

Beam Me Up

Estava lendo hoje o post do Bruno Torres e acabou me despertando interesse. Ter todos os leitores em uma única URL, podendo no futuro alterar para qual eu quizer sem ter que me preocupar com nada é uma idéia que me agrada muito (e que eu deveria ter tido antes de mudar dos antigos blogs). Resolvi então meter a mão na massa.

Antes de começar a brincar com o mod_rewrite, fiz questão de achar uma ferramente boa para testar as novas URL’s e decidi usar o Web-Sniffer. Ferramente muito boa, com muitas opções e funciona perfeitamente (ao menos para o meu propósito, que era testar como ficariam os HTTP Status Code). ps: se você não tem uma mínima noção de como funciona o protocolo HTTP, trate de aprender ao menos o básico.

Passada rápida no FeedBurner, criada a conta. Alguma atenção para a configuração do feed vale a pena. O FeedBurner conta com muitas, mas muitas opções para você criar o feed do jeito que você deseja. Permite integração com o del.icio.us e flickr por exemplo (mas tenha bom senso e não faça isso com seu feed principal, ofereça um feed alternativo com esses opcionais, pois se você não sabe, talvez algum leitor não esteja interessado nas fotos do casamento da sua tia).

Agora vem a parte interessante: redirecionar os feeds para os novos endereços. Uma rápida olhada no mod_rewrite cheat sheet e voilà.

RewriteCond %{HTTP_USER_AGENT} FeedBurner
RewriteRule ^feed?$ /index.php?feed=atom [QSA,L]
RewriteRule ^feed/?$ http://feeds.feedburner.com/plentz [R=302,L]
RewriteRule ^(feed|rdf|rss|rss2|atom)(\/.*)?$ http://plentz.org/feed/ [R=301,L]

Explicando um pouco do que o código faz:

RewriteCond %{HTTP_USER_AGENT} FeedBurner

Se o user agent for FeedBurner (string utilizada pelo serviço do Feed Burner), faz a ação da próxima linha. Para a sentença RewriteCond ele somente fará a linha seguinte se a comparação for verdadeira.

RewriteRule ^feed?$ /index.php?feed=atom [QSA,L]

Se a url que está sendo acessada for seu_endereço/feed (e claro, atender a condição anterior) então envia para o feed original. Lembrando que utilizando como exemplo o meu caso, que utilizo o WordPress, você deve redirecionar para o seu arquivo do feed.

RewriteRule ^feed?$ http://feeds.feedburner.com/plentz [R=302,L]

She-bangs line. Redireciona qualquer um que tentar acessar seu_endereço/feed(e não ter o user-agent igual a “FeedBurner” para o seu feed no FeedBurner). Note que o redirecionamento é temporário, pois é feito com o status code 302.

RewriteRule ^(feed|rdf|rss|rss2|atom)(\/.*)?$ http://plentz.org/feed [R=301,L]

Para manter os antigos endereços working, resolvi fazer um pequeno hack. A regular expression acima pega qualquer url que for digitada que começe com feed ou rdf ou rss ou rss2 ou atom e que tenha alguma ocorrência de qualquer caractere depois. Ou seja, se alguém estivesse assinando seu feed através de seu_endereço/rss/yadayada e o leitor de feed’s dele for tentar verificar atualizações, ele automaticamente receberá um status code 301, movido permanentemente e será redirecionado para /feed.

Perfeito, agora tanto seus assinantes quanto o FeedBurner apontam para a mesma url, mas recebem conteúdos diferentes. Você pode fazer uma infinidade de coisas úteis com o mod_rewrite, mas para tanto, é bom ter um mínimo de conhecimento em regular expressions.

Leia mais:

Popularity: 46% [?]

1 Response to "Better feed’s"

1 | werutzb

October 7th, 2008 at 11:02 pm

Avatar

Hi!

I want to improve my SQL knowledge.
I red that many SQL resources and would like to
get more about SQL for my occupation as oracle database manager.

What would you recommend?

Thanks,
Werutz

Comment Form


  • Rodrigo Amaral Rosa: Olá Diego, como disse antes funcionou tudo certo no tutorial. Mas eu quis seguir um pouco mais além, configurando virtualhost no apache para o meu d
  • éricoulisses: absurdo: não consegui passar de 50kbps com o pacote de 500kbps, se cheguei a 50 foi um milagre, só fiz download de uma música e pronto, kkkkkk,
  • Tony Amorim: Ótimo Tutorial, parabéns.... Estou com problemas com pool de conexão no tomcat, não está funcionando. Funciona com o tomcat sózinho. Tony

Flickr PhotoStream

  • IMG_3498
  • IMG_3458
  • IMG_3450
  • IMG_3473
  • IMG_3469
  • IMG_3464
  • IMG_3444
  • IMG_3402

About

This is an example of a WordPress page, you could edit this to put information about yourself or your site so readers know where you are coming from.