Недавно столкнулся с проблемой, когда читатели этого блога могли подписываться на два разных RSS канала, один из которых от FeedBurner, а второй располагался по адресу http://devaka.ru/rss/. В основном подписка на последний фид шла через браузер, когда пользователи кликали RSS иконку в адресной строке и добавляли канал в закладки.
Было решено перенаправлять всех, кто обращается к последнему адресу на http://feeds2.feedburner.com/devaka, так как FeedBurner позволяет очень гибко настраивать канал, смотреть статистику и вообще, проводить хоть какой-то анализ. Поэтому, если внезапно ваш браузер перестал получать обновления этого seo блога, то вам необходимо переподписаться по другому адресу (какому именно см. выше).
Для тех, кто столкнется с подобной проблемой, ниже описывается алгоритм, как сделать перенаправление фида средствами PHP, Apache или Nginx. Для начала немного теории о редиректах RSS каналов.
Существует несколько видов редиректов: обычный серверный редирект c 301-ой ошибкой, XML и HTML редиректы. Для XML, коим является также любой фид (RSS или Atom) это перенаправление выглядит следующим образом:
Перенаправляя фид таким образом, можно лишиться множество читателей, так как из двух десятков проанализированных RSS ридеров такой вид xml-редиректа поддерживает только NetVibes (возможно, его поддерживают также некоторые мобильные ридеры, в этой области тесты не проводились).
Однако, 301 редирект поддержали 90% приложений, работающих с RSS каналами, к которым относятся:
— браузеры Opera 9, Safari, MSIE7;
— онлайн ридеры Bloglines, NewsGator, Google Reader, RSS I.UA, NetVibes;
— десктопные приложения FeedDemon, Thunderbird, Feedreader, GreatNews, Snarfer, Sharpreader и JetBrains Omea.
Единственные, кто не поддержал ни одного вида редиректа, это Mozilla Firefox 3 (средства закладок) и Яндекс.Закладки, за что Яндексу минус в репу :)
Итак, как же перенаправление фида будет выглядеть в коде? Алгоритм редиректа следующий:
1. Определяем User-Agent обращающегося к RSS каналу приложения;
2. Если обращается сам Feedburner, то оставляем все как есть (User-Agent фидбернера: "FeedBurner/1.0 (http://www.FeedBurner.com)");
3. Остальных редиректим с 301 ошибкой на новый адрес.


11 Ответов
Kuralesoff
Июнь 15, 2009 at 02:16
1Редирект в PHP, как написано в посте будет с кодом 302, для того чтобы редирект был с 301 кодом необходимо
заменить
header(“Location: “. $rss_url);
на
header(“Location: “. $rss_url,TRUE,301);
Devaka
Июнь 15, 2009 at 04:29
2Kuralesoff, спасибо за верное замечание!
blog.negotiant.org
Июнь 16, 2009 at 05:10
3А почему бы не использовать плагин Permalink Redirect?
Devaka
Июнь 16, 2009 at 07:41
4blog.negotiant.org, это для вордпреса плагин? Дело в том, что не все блоги на вордпресе, да и вообще, в принципе, rss фид может стоять не только на блогах. Возможно, кому-то код понадобится. А плагин это хорошо, не отрицаю. Единственное, можно ли проверить с помощью этого плагина юзерагент обращаемого к фиду бота?
SEO негоциант
Июль 15, 2009 at 06:48
5Да. Плагин для WordPress.
На счет юзерагента – не знаю. Но с перенаправлением я попал конкретно: теперь не могу отключить: http://blog.negotiant.org/kak-ubrat-perenapravlenie-rss-feed-v-wordpress/
Помог бы кто? Не за “спасибо” конечно.
Devaka
Июль 15, 2009 at 07:41
6SEO негоциант, мне кажется, что надо корректно удалить плагин. Если хочешь, я могу попробовать помочь это сделать либо из админки или с ftp. Свяжись со мной через скайп (ник lapitales).
SEO негоциант
Июль 15, 2009 at 07:52
7ага. вечером попробую.
Serg
Октябрь 13, 2011 at 17:07
8Можно в .htaccess дописать следующую строчку:
Redirect 301 /rss/ваш-фид.xml http://feeds2.feedburner.com/devaka
В данном случае, все, кто обращается к первоначальному адресу будут перенаправляться в feedburner, т.е. ваша лента была бы доступна, как для старых подписчиков, так и для новых, с той лишь разницей, что прежних подписчиков вы сами перенаправляете на feedburner.
Возможно, этот коммент уже и не актуальный т.к. дата публикации – 2009 г., но, кому-то это может пригодиться.
Браузеры такое перенаправление поддерживают, и rss-читалка Abilon тоже, за другие агрегаторы не знаю, но проблем возникать не должно.
Дмитрий Тильк
Октябрь 19, 2011 at 03:18
9Я установил плагин feedburner_feedsmith_plugin. Теперь при нажатии на кнопку rss сразу читаель направляется на фидбернер.
Serg
Ноябрь 2, 2011 at 01:55
10В 8-комментарии я написал о перенаправлении, так вот, делать этого не стоит.
Такое решение прекрасно работает для перенаправления старой страницы на новую, но, в случае с feedburner его лучше не использовать.
Да, старые посетители перенаправятся на новую ленту, но, feedburner не сможет обновлять rss, т.к. при обращении к ленте – он будет перенаправляться сам на себя, т.е. ему не будет, откуда брать обновления.
death
Декабрь 26, 2011 at 21:49
11У меня лента перестала работать. Фидбарнер заглючил или что непонятно.
Ответить