Проблема с использованием .htaccess для перенаправления Feedburner

8 июн. 2011 г., 21:16:20
Просмотры: 883
Голосов: 2

Я использую постоянные ссылки в формате год/месяц/название-записи, а также плагин download-monitor для обработки загрузок файлов. Я добавил правила перезаписи в начало файла .htaccess, следуя инструкциям на perishable press.

Я делал то же самое на другом блоге, и там всё работало нормально. Единственные различия: тот блог не использовал download-monitor, и установка была в корне домена, а не в поддиректории /blog/.

Если я закомментирую эту строку:

RewriteCond %{REQUEST_URI} ^/?feed.* [NC]

То всё работает. Мне просто интересно, почему эта строка есть в инструкциях, если она не работает? Может ли это быть связано с поддиректорией?

.htaccess:

# временное перенаправление всех WordPress-фидов на Feedburner
# из http://perishablepress.com/press/2008/03/25/redirect-wordpress-feeds-to-feedburner-via-htaccess-redux/
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /blog/
RewriteCond %{REQUEST_URI} ^/?feed.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC] 
RewriteRule ^feed/?.*$ http://feeds.feedburner.com/mysite [L,NC,R=302]
</IfModule>

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /blog/
RewriteRule ^download/([^/]+)$ http://www.mysite.com/blog/wp-content/plugins/download-monitor/download.php?id=$1 [L]
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress
0
Все ответы на вопрос 1
7

Попробуйте этот вариант. Такой формат работает у меня. Не нужно повторять IfModule, RewriteEngine, RewriteBase.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC] 
RewriteRule ^feed/?.*$ http://feeds.feedburner.com/mysite [L,NC,R=302]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

RewriteRule ^download/([^/]+)$ http://www.mysite.com/blog/wp-content/plugins/download-monitor/download.php?id=$1 [L]
</IfModule>
# END WordPress

Вот хорошее руководство по htaccess: http://codeigniter.com/wiki/mod_rewrite/

Если у вас продолжаются проблемы, возможно, стоит рассмотреть использование плагина: http://wordpress.org/extend/plugins/tentbloggers-feedburner-rss-redirect-plugin/screenshots/

28 июл. 2011 г. 05:29:07
Комментарии

Значит, вы говорите, что строка: RewriteCond %{REQUEST_URI} ^/?feed.* [NC] не обязательна? Кажется, всё работает, когда я убираю эту строку, но не понимаю, зачем она была в инструкциях.

jjeaton jjeaton
31 июл. 2011 г. 19:49:41

Этот RewriteCond всё ещё необходим, если вы видите его в моём коде - он там остаётся. Вам просто не нужно повторять ifModule, RewriteEngine и RewriteBase. Сравните код выше с тем, который вы изначально опубликовали.

Sean Lee Sean Lee
1 авг. 2011 г. 10:26:47

Хорошо, я использовал вашу версию, но у меня не получается заставить её работать - теперь ни одна из feed-ссылок не перенаправляет на FeedBurner. Я переформулирую свой вопрос выше.

jjeaton jjeaton
2 авг. 2011 г. 08:02:02

ReWriteCond../?feed - это директива, определяющая условие правила, когда текущее состояние URI соответствует /?feed. В вашем оригинальном посте вы указали проблему в первой строке rewritebase. Поэтому я оставил это без изменений. Эта строка не обязательна. Поскольку вы отметили, что изучили свой код на perishablepress, вы должны были прочитать их комментарий о том, чтобы удалить эту строку, если ваш сервер не перенаправляет должным образом.

Sean Lee Sean Lee
2 авг. 2011 г. 08:11:38

Ох, я не перенаправлял ленту комментариев, поэтому, думаю, пропустил эту часть. Спасибо! Также единственная причина, по которой все было разделено в моем .htaccess, заключалась в том, чтобы позволить WordPress добавлять свои собственные правила и Download Monitor, а я просто скопировал код FeedBurner. Ваш вариант определенно чище.

jjeaton jjeaton
3 авг. 2011 г. 01:48:00

На самом деле это не работает. Вам нужно переместить последние RewriteCond и RewriteRule выше строки RewriteRule ^index\.php$ - [L]. В статье конкретно говорится, что они должны быть выше раздела с обычными постоянными ссылками WP.

jjeaton jjeaton
3 авг. 2011 г. 02:30:27

хорошо знать, что вы разобрались. Мой htaccess структурирован для других целей. Нам просто нужно адаптировать его под наши отдельные нужды. (улыбка)

Sean Lee Sean Lee
3 авг. 2011 г. 12:21:25
Показать остальные 2 комментариев