<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Leaf Duo &#187; mod_rewrite</title>
	<atom:link href="http://blog.leafduo.com/tag/mod_rewrite/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.leafduo.com</link>
	<description>All About My Life and Information Technology</description>
	<lastBuildDate>Sat, 06 Aug 2011 07:34:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>用 mod_rewrite 重定向 WordPress 的 RSS</title>
		<link>http://blog.leafduo.com/34/redirect-rss-of-wordpress-using-mod_rewrite/</link>
		<comments>http://blog.leafduo.com/34/redirect-rss-of-wordpress-using-mod_rewrite/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 15:36:34 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=221</guid>
		<description><![CDATA[不知道为啥，原来的重定向失效了…… 似乎现在没有什么好用的重定向插件，要么是不支持 Feedsky，要么没法用自定义域名，咱不太会 PHP，也懒得 hack 了，所以就祭出 Apache 来做这件事，当然 mod_rewrite 是少不了了。 先说方法，后说其他。在 .htaccess 的最上面加这么几行： 1 2 3 4 5 6 7 8 9 10 # BEGIN user-defined &#60;IfModule mod_rewrite.c&#62; RewriteEngine On RewriteBase / RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner&#124;FeedValidator&#124;feedsky) [NC] RewriteCond %{REQUEST_URI} ^/feed.* [NC] &#8230; <a href="http://blog.leafduo.com/34/redirect-rss-of-wordpress-using-mod_rewrite/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>不知道为啥，原来的重定向失效了……</p>
<p>似乎现在没有什么好用的重定向插件，要么是不支持 Feedsky，要么没法用自定义域名，咱不太会 PHP，也懒得 hack 了，所以就祭出 Apache 来做这件事，当然 mod_rewrite 是少不了了。</p>
<p>先说方法，后说其他。在 .htaccess 的最上面加这么几行：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #adadad; font-style: italic;"># BEGIN user-defined</span>
&lt;<span style="color: #000000; font-weight:bold;">IfModule</span> mod_rewrite.c&gt;
<span style="color: #00007f;">RewriteEngine</span> <span style="color: #0000ff;">On</span>
<span style="color: #00007f;">RewriteBase</span> /
<span style="color: #00007f;">RewriteCond</span> %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator|feedsky) [NC]
<span style="color: #00007f;">RewriteCond</span> %{REQUEST_URI} ^/feed.* [NC]
<span style="color: #00007f;">RewriteRule</span> .* http://feed.leafduo.com/ [NC,L,R=<span style="color: #ff0000;">301</span>]
&lt;/<span style="color: #000000; font-weight:bold;">IfModule</span>&gt;
&nbsp;
<span style="color: #adadad; font-style: italic;">#END user-defined</span></pre></td></tr></table></div>

<p>感觉用 mod_rewrite 做这件事比较合适，不用经过 WP 不说，效果还比较好，所有访问原先 feed 的都被重定向了。</p>
<p>大家都知道，Feedsky 爬虫的 UA 是这样的："Mozilla 5.0 (compatible; Feedsky 1.0; http://www.feedsky.com)"，所以我们就能通过过滤 UA 来分别对待爬虫和其他访问者，对于爬虫不做重定向，其他访问者一律重定向。</p>
<p>需要一点正则表达式知识和一点 Apache 的配置，先是参考了<a href="http://www.askapache.com/htaccess/redirecting-wordpress-feeds-to-feedburner.html">这个</a>，说了一大堆，没仔细看，然后准备自己写。找到一个 mod_rewrite 的 <a href="http://borkweb.com/story/apache-rewrite-cheatsheet">Cheat Sheet</a>，感觉比 Apache 的文档好懂多了。</p>
<p>然后就写出来了，一开始是放在了 .htaccess 的最下面，发现怎么都不起作用，后来挪到最上面了，应该是跟 WP-SuperCache 的 rewrite 规则冲突了，看到它的规则里有带 [L] 的。</p>
<p>目前看来工作良好。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/34/redirect-rss-of-wordpress-using-mod_rewrite/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

