Redirecionando seu feed para o Feedburner

Recebi alguns emails e comentários sobre o último post de pessoas com dificuldade para configurar o redirecionamento dos seus feeds atuais para o feedburner.

[update]
Se você usa WordPress, pode usar o WordPress Feedburner Plugin. Eu não testei, mas pelo que li parece que ele faz todo o trabalho sujo pra você. Se alguém tiver testado, por favor, me conte como é e eu posto aqui.

[update2]
Atualizei o post pra dizer que, se você usa o wordpress e não está afim de usar o plugin citado acima, você tem que colocar qualquer regra de reescrita deste artigo antes das regras do wordpress. Da seguinte forma, por exemplo:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !feedBurner [NC]
RewriteRule ^feed/?$ http://feeds.feedburner.com/meufeed [R=302,L]
RewriteEngine Off
# BEGIN WordPress 

Se as regras forem colocadas depois das do wordpress, ele simplesmente vai aplicar as regras dele e finalizar a reescrita, sem nem ao menos ler as regras que você fez.

Outro motivo para o update é que é interessante fazer a checagem do user agent de forma que seja ignorada a caixa das letras. Ou seja, usando o [NC], como acima.
[/update2]

E para os usuários de Movable Type também tem um plugin. Acho que a Simone está usando e, pelo jeito, está funcionando muito bem.
[/update]

Como eu disse, para fazer esse tipo de coisa, é necessário pelo menos um mínimo de conhecimento sobre HTTP. Você precisa saber manipular redirecionamentos e verificar User Agents seja pelo seu servidor HTTP, seja por alguma linguagem que rode no servidor.

Como vejo que há muitas pessoas com dúvidas sobre isso, vou explicar rapidamente como configurar os tais redirecionamentos.

Vou usar três hipóteses e dar a solução para cada uma delas: feeds estáticos, feeds dinâmicos acessados por uma URL sem query string (variáveis na URL, do tipo ?var1=valor1&var2=valor2) e feeds dinâmicos com query string.

Feeds estáticos

Feeds estáticos são meros arquivos em XML plano, que podem ser acessados via uma URL que reflita sua posição no sistema de arquivos abaixo da root do site ou por alguma URL customizada, seja por meio de mod_rewrite, PHP ou algum outro meio.

Vamos ver como proceder nos dois casos.

Para o nosso exemplo, vamos imaginar um arquivo chamado feed.xml, localizado na raiz do seu site. Normalmente ele pode ser acessado pela URL http://seusite.com/feed.xml.

Vamos assumir também que a URL do novo feed gerado no feedburner seja http://feeds.feedburner.com/meufeed.

Nesse caso, há duas maneiras de você fazer com que seus leitores continuem acessando a url dentro do seu site e sejam redirecionadas para o feedburner: mantendo o mesmo arquivo e verificando o user agent ou mudando o nome do arquivo.

Se você mudar o nome do arquivo, a coisa se simplifica. Nesse caso o mod_rewrite nem é necessário. Por exemplo, se seus usuários acessam /feed.xml, voce pode trocar o nome desse arquivo pra feed-fb.xml, usar essa URL no feedburner e redirecionar a URL que seus usuários acessam com uma regra de redirecionamento (mod_alias):

Redirect /feed.xml http://feeds.feedburner.com/meufeed

Note que o arquivo feed.xml não existe mais. O que há agora é uma URL, /feed.xml, que simplesmente redireciona para um outro local.

Se você mantiver o arquivo com o mesmo nome, o que você precisa fazer é apenas incluir as linhas abaixo no seu arquivo .htaccess, na raiz do site (no mesmo diretório onde está o feed):

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !feedBurner [NC]
RewriteRule ^feed\.xml$ http://feeds.feedburner.com/meufeed [R=302,L]

Isso significa: se o user agent não for o feedburner, ao receber uma requisição para feed.xml, redirecione para http://feeds.feedburner.com/meufeed. Esse redirecionamento é temporário (R=302), e essa regra deve ser a última a ser processada (L), ou seja, qualquer regra abaixo desta deve ser ignorada.

A primeira linha é necessária porque o feedburner precisa continuar tendo acesso à URL original, e não ser redirecionado pra si mesmo.

Agora, imaginemos que o seu feed (feed.xml) seja acessado pela url http://seusite.com/feed de acordo com uma regra de reescrita, como a abaixo:

RewriteRule ^feed\/?$ /feed.xml

Os usuários devem continuar acessando essa URL (/feed) e ser redirecionados para a nova, no feedburner. Para isso, use uma regra bem parecida com a primeira:

RewriteCond %{HTTP_USER_AGENT} !feedBurner [NC]
RewriteRule ^feed\/?$ http://feeds.feedburner.com/meufeed [R=302,L]

RewriteRule ^feed\/?$ /feed.xml

Ou seja, qualquer um, menos o feedburner, vai ser redirecionado. Acho que você já pegou a idéia, né? Que bom…

Feeds dinâmicos sem query string

Mesmo que o seu feed seja dinâmico, leia a parte acima, sobre feeds estáticos, para entender como funciona o esquema do redirecionamento. A mágica com os arquivos dinâmicos é exatamente a mesma.

Digamos que o seu feed se chame feed.php e esteja localizado na raiz do seu site. E a URL do feed no feedburner é a mesma que usamos acima.

No caso de você fornecer a seus leitores a url com a localização do arquivo PHP (http://seusite.com/feed.php), use a seguinte regra:

RewriteCond %{HTTP_USER_AGENT} !feedBurner [NC]
RewriteRule ^feed\.php$ http://feeds.feedburner.com/meufeed [R=302,L]

A explicação é a mesma dada acima.

No caso de você fornecer uma URL customizada, como por exemplo http://seusite.com/feed, use a regra:

RewriteCond %{HTTP_USER_AGENT} !feedBurner [NC]
RewriteRule ^feed\/?$ http://feeds.feedburner.com/meufeed [R=302,L]

RewriteRule ^feed\/?$ /feed.php

Ou seja, funciona da mesma forma que quando o feed é estático. Mas, como eu sei que vão perguntar, acho que pecar por excesso não é o pior dos pecados ;) .

Feeds dinâmicos com query string

Vou usar o exemplo do nosso amigo Rodrigo Ghedin. O feed do site dele tem uma URL que consiste do nome de um arquivo PHP mais uma query string. A URL é http://winajuda.com/news/rss.php?f=view. E qual o problema com isso? Bem, o mod_rewrite não intercepta a query string. Ou seja, se você reescreve um arquivo rss.php para, por exemplo, feed.rss, este último aceitaria normalmente as query strings na URL. Ou seja, você precisaria acessar por /feed.rss?f=view.

Trocando em miúdos, se você usar

RewriteRule ^rss\.php$ http://feeds.feedburner.com/meufeed [R=302,L]

e acessasse http://seusite.com/rss.php?f=view, você seria redirecionado para a URL do feedburner, com a query string no fim. Assim: http://feeds.feedburner.com/meufeed?f=view.

Isso não causa problemas, na verdade, mas fica um pouco estranho. Esse caso não é, na verdade, o melhor para demonstrar o problema com as query strings mas, se você tem algum caso em que várias variáveis sejam passadas pela query string e isso não possa ser mudado, saiba que o mod_rewrite não é muito seu amigo nesse caso. Você não pode fazer, por exemplo:

RewriteRule ^rss\.php\?f=view$ http://feeds.feedburner.com/meufeed [R=302,L] #isso é errado

Isso não vai funcionar. A melhor maneira de resolver isso é, com certeza, no próprio PHP. E é muito simples.

[update]
Estive discutindo sobre isso com o Danilo hoje e ele me mostrou um texto que mostra como lidar com query strings com mod_rewrite. No caso do nosso exemplo, a regra seria assim:

RewriteCond %{HTTP_USER_AGENT} !feedBurner [NC]
RewriteCond %{QUERY_STRING} ^f=view$
RewriteRule ^rss\.php$ http://feeds.feedburner.com/meufeed? [R=302,L]

[/update]

Continuando a usar o exemplo do Ghedin, ele precisa apenas colocar algumas linhas no início do arquivo rss.php:

<?php
$ua = $_SERVER['HTTP_USER_AGENT'];
if ((isset($_GET['f'])) &&
  ($_GET['f'] == 'view') &&
  (! eregi('feedburner', $ua)))
  {
    header("Location: http://feeds.feedburner.com/meufeed");
    exit; # so pra garantir que não continue a execução
  }
?>

Simples assim. Acho que não é necessário explicar as linhas acima, assumindo que você entenda pelo menos um pouco de PHP.

Bom, é isso. Acho que com esse texto você tem o básico para brincar com redirecionamentos. Mas, lembre-se, HTTP é a base da web. Você precisa entendê-lo pelo menos um pouco. Portanto, vale a pena dar uma estudada sobre o assunto. Uma busca no google é um bom começo. ;)

20 Comentários sobre “Redirecionando seu feed para o Feedburner”

Faça um comentário

Poxa, obrigado pela atenção especial dada ao meu problema! Entretanto, ou ele é muito cabeludo mesmo, ou eu sou muito incompetente.

Adicionei as linhas acima no início do rss.php, subistitui o endereço do feed pelo correto, mas quando tentei acessá-lo, no agregador dá erro, e no navegador, aparece a seguinte mensagem:

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ‘]’ in /home/winajuda/public_html/news/rss.php on line 4

E aproveitando o espaço, sem querer abusar, não ficou muito claro se devo ou não adicionar a linha abaixo no .htaccess:

RewriteRule ^rss\.php$ http://feeds.feedburner.com/meufeed [R=302,L]

Tentei com ela, e sem também, em ambos os casos, não obtive sucesso. Mas enfim, creio que o problema esteja ali no código PHP mesmo (sou tapado em PHP, sorry).

Mais uma vez, obrigado!

Abraços!


Bruno – muito obregado para isso descricão em portugues. espero que muitos blogadores portugueses e brasileros possam encontrar isso.

nos faltamos facilidade de redirectar os feeds dinâmicos, mas esperamos fazer mais facil no futuro.

agradecimentos para usar o FeedBurner!


[...] Seguindo as dicas do Bruno Torres (Feedburner: estatísticas, economia de banda e um trato no visual dos seus feeds e Redirecionando seu feed para o Feedburner), estou redirecionando o do SemJanelas.net para o FeedBurner. Assim eu posso ter certeza que só eu assino meus feeds! « Procrastinando   [...]


Bruno, uso este plugin mesmo que você citou para Movable Type e ele funciona muito bem. Cria, inclusive, a conta no FeedBurner para estes feeds. Testei o plugin para WordPress em um outro site e sua configuração é muito simples e rápida. []s


[...] 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. [...]


[...] Recentemente o Bruno Torres postou dois ótimos textos sobre o FeedBurner. Um mais técnico e outro mais leve. Se você não leu, leia. Como ele escreveu: “Basicamente, são quatro as funcionalidades que fazem do FeedBurner uma ferramenta extremamente útil: estatísticas bastante detalhadas sobre os acessos ao feed, aplicação de folhas de estilo XSLT e CSS para melhorar a aparência do feed quando acessado por browsers, economia de banda e a capacidade de sempre entregar uma versão do feed compatível com o agregador usado.” Nada mais a declarar. [...]


#7 | Janio

Acabo de migrar meu site para o novo domínio, usando o WordPress. Instalei o plugin que o Bruno sugere, e deu tudo muito certo! Já estou usufruindo de todas as facilidades do FeedBurner sem ter de me preocupar com mais nada!


[...] Calhou que o Bruno Torres publicou dois artigos sobre o FeedBurner, aqui e aqui, e resolvi experimentar no meu outro blog, o Lucrando. Aprovei com louvor. [...]


Também estou usando o plugin para o wordpress e foi muito fácil configurá-lo.


#10 | Lorn

Ae Bruno blz?
Parabéns pelo tutorial muito bom.
Eu uso wordpress 2.0 ele tem o /feed/ e o /feed/atom/ eu fiz as seguintes regras ( baseada nas suas )

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !FeedBurner
RewriteRule ^feed/?$ http://feeds.feedburner.com/lornlab [R=302,L]
RewriteRule ^feed/atom/?$ http://feeds.feedburner.com/lornlab [R=302,L]

RewriteRule ^feed/?$ /feed.xml
RewriteRule ^feed/atom?$ /feed.xml

espero que ajude alguem que tenha o mesmo problema que eu, falow
Obrigado.

PS: poderia ter feito um trackback


Estou usando o plugin do wordpress para o feedburner e está funcionando certinho. Dê uma olhada:
http://virgulaimagem.redezero.org/

abraços,
marcelo


#12 | Rondy

Tô com problemas quando utilizo a barrinha opcional (por exemplo, /rss/). O navegador não consegue encontrar o arquivo “/rss.xml/”.

No caso do Ghedin, ouve erro de sintaxe. Verifica teu código na cláusula IF.


#13 | diego

eu uso o plugin do worpress e consegui colocar para funcionar em 5 minutos


Por falar em feeds! Sempre que entro no Bloglines tem 15 feeds novos teus! Mas quando abro são sempre os mesmos! Porque ráios teus feeds ficam atualizando sempre? Deve ter algum problema por aí!


O que o Joe Edman disse, está acontecendo no meu bloglines também… problemas?


#16 | Joaquim

Meu amigo,

Estou com uma dúvida em PHP, qual seja: tenho um site que redireciona para um outro site. Depois que ele chegasse no 2o. fizesse o que tinha que fazer e retornasse para o primeiro. Acontece que o primeiro site é meu e tenho total domínio e o segundo é de um particular. O que está acontecendo… eu redireciono e quando chega no 2o. site fica lá… queria que depois de um determinado tempo, ele retornasse para o primeiro, no caso o meu. Pode me ajudar nisso?

Obrigado.
ajjaf@bol.com.br


Bruno, qual a desvantagem de editar o Theme e alterar no meu caso, que ainda to usando o Theme Default, o header e o footer?

Obrigado.


Desculpe a ignorância, mas em que seção do código eu coloco isso, valeu.
Uso o WordPress 2.2 e meu plugin não funcionou.


[...] em breve deverá disponibilizar anúncios nos feeds, é só aguardar. Para aprender como usar o Feedburner, é só visitar o post do Bruno [...]


[...] o Bruno Torres postou dois ótimos textos sobre o FeedBurner. Um mais técnico e outro mais leve. Se você não leu, leia. Como ele escreveu: “Basicamente, [...]


«

»

Deixe seu comentário