526 просмотров

Недавно столкнулся с проблемой, когда читатели этого блога могли подписываться на два разных 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 ошибкой на новый адрес.

  • 0 Нет
  • 8 Да
  • Мне понравилось!

Если вам понравилась статья, вы можете подписаться на RSS или E-mail рассылку. Для получения обновлений по электронной почте, введите ваш e-mail адрес в эту форму (Доставка от FeedBurner):