用 mod_rewrite 重定向 WordPress 的 RSS

不知道为啥,原来的重定向失效了……

似乎现在没有什么好用的重定向插件,要么是不支持 Feedsky,要么没法用自定义域名,咱不太会 PHP,也懒得 hack 了,所以就祭出 Apache 来做这件事,当然 mod_rewrite 是少不了了。

先说方法,后说其他。在 .htaccess 的最上面加这么几行:

1
2
3
4
5
6
7
8
9
10
# BEGIN user-defined
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator|feedsky) [NC]
RewriteCond %{REQUEST_URI} ^/feed.* [NC]
RewriteRule .* http://feed.leafduo.com/ [NC,L,R=301]
</IfModule>
 
#END user-defined

感觉用 mod_rewrite 做这件事比较合适,不用经过 WP 不说,效果还比较好,所有访问原先 feed 的都被重定向了。

大家都知道,Feedsky 爬虫的 UA 是这样的:"Mozilla 5.0 (compatible; Feedsky 1.0; http://www.feedsky.com)",所以我们就能通过过滤 UA 来分别对待爬虫和其他访问者,对于爬虫不做重定向,其他访问者一律重定向。

需要一点正则表达式知识和一点 Apache 的配置,先是参考了这个,说了一大堆,没仔细看,然后准备自己写。找到一个 mod_rewrite 的 Cheat Sheet,感觉比 Apache 的文档好懂多了。

然后就写出来了,一开始是放在了 .htaccess 的最下面,发现怎么都不起作用,后来挪到最上面了,应该是跟 WP-SuperCache 的 rewrite 规则冲突了,看到它的规则里有带 [L] 的。

目前看来工作良好。

Tags:,,,

This entry was posted in blogging, Information Technology and tagged , , , . Bookmark the permalink.

2 Responses to 用 mod_rewrite 重定向 WordPress 的 RSS

  1. Victor.Hu says:

    我之前也弄了一个重定向
    但是好像除了一点小问题
    在feedsky和feedburner那边
    设定的源地址如果还是*/feed的话
    好像就不更新了
    求解药……

  2. Leaf Duo says:

    @Victor.Hu
    重定向的时候要注意别把 feedsky 和 feedburner 的请求重定向掉,否则他重定向到自己了,肯定就更新不了,可以用 UA 来判断。上面有写。应该是这个问题

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">