Недавно столкнулся с проблемой, когда читатели этого блога могли подписываться на два разных 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 ошибкой на новый адрес.
Найдите нужного исполнителя через каталог seo-компаний Рунета.
7 Ответов
июня 15, 2009 at 03:16
1Редирект в PHP, как написано в посте будет с кодом 302, для того чтобы редирект был с 301 кодом необходимо
заменить
header(“Location: “. $rss_url);
на
header(“Location: “. $rss_url,TRUE,301);
июня 15, 2009 at 05:29
2Kuralesoff, спасибо за верное замечание!
июня 16, 2009 at 06:10
3А почему бы не использовать плагин Permalink Redirect?
июня 16, 2009 at 08:41
4blog.negotiant.org, это для вордпреса плагин? Дело в том, что не все блоги на вордпресе, да и вообще, в принципе, rss фид может стоять не только на блогах. Возможно, кому-то код понадобится. А плагин это хорошо, не отрицаю. Единственное, можно ли проверить с помощью этого плагина юзерагент обращаемого к фиду бота?
июля 15, 2009 at 07:48
5Да. Плагин для WordPress.
На счет юзерагента – не знаю. Но с перенаправлением я попал конкретно: теперь не могу отключить: http://blog.negotiant.org/kak-ubrat-perenapravlenie-rss-feed-v-wordpress/
Помог бы кто? Не за “спасибо” конечно.
июля 15, 2009 at 08:41
6SEO негоциант, мне кажется, что надо корректно удалить плагин. Если хочешь, я могу попробовать помочь это сделать либо из админки или с ftp. Свяжись со мной через скайп (ник lapitales).
июля 15, 2009 at 08:52
7ага. вечером попробую.
Ответить