我有一段时间让这个合作。基本上我正在尝试将我的网站的Feed重定向到Feedburner,但我不希望任何带有参数的Feed网址重定向。
例如:
mysite.com/feed/
应重定向到http://feeds.feedburner.com/mysite
但此网址不应重定向:
mysite.com/feed/?post_type=custom
现在,第二个网址被重定向到http://feeds.feedburner.com/mysite?post_type=custom
,这是有问题的。我希望该URL保持不变。任何有?的网址?在/ feed /之后应该单独留下。
这是我的代码:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/mysite [R=302,NC,L]
</IfModule>
我玩了RewriteRule,但我无法让它合作。我尝试对问号做一个负面的预测,但它没有改变任何东西。
使用([_0-9a-z-]+)?
的原因是因为WordPress创建了5 different feeds。
提前感谢您的帮助。我觉得自己像一个假人,因为我几个月前沉重到正则表达式,现在我不能这样做。
答案 0 :(得分:1)
URL中的问号在RewriteRule中不匹配,因为它与REQUEST_URI匹配,而不是QUERY_STRING。如果您希望不重定向,如果有查询字符串,您应该只能添加RewriteCond%{QUERY_STRING} ^ $
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/mysite [R=302,NC,L]
</IfModule>
然后,只有在查询字符串为空时才会重定向。