不知道为啥,原来的重定向失效了……
似乎现在没有什么好用的重定向插件,要么是不支持 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:apache,mod_rewrite,RSS,wordpress

我之前也弄了一个重定向
但是好像除了一点小问题
在feedsky和feedburner那边
设定的源地址如果还是*/feed的话
好像就不更新了
求解药……
@Victor.Hu
重定向的时候要注意别把 feedsky 和 feedburner 的请求重定向掉,否则他重定向到自己了,肯定就更新不了,可以用 UA 来判断。上面有写。应该是这个问题