我使用 Feedburner 并重定向了我的 WordPress 源。我想为 Yahoo Pipes 2.0 用户代理添加例外,但用户代理字符串包含空格。当我用引号括起来时,我收到 apache 配置测试失败。
规则如下。
# BEGIN Feedburner
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(feed|wp-atom|wp-feed|wp-rss|wp-rdf|wp-commentsrss)(.+)\ HTTP/ [NC,OR]
RewriteCond %{QUERY_STRING} ^feed [NC]
RewriteCond %{HTTP_USER_AGENT} !^(FeedBurner|FeedValidator) [NC]
RewriteCond %{HTTP_USER_AGENT} !^"Yahoo Pipes 2.0" [NC]
RewriteRule .* http://feeds.feedburner.com/xxxxxxx [R=307,L]
</IfModule>
# END Feedburner
这是我尝试重新加载 apache 时收到的错误。此外,规则位于 vhost 中,因为我使用的是 WordPress 多站点,如果我将其放入 .htaccess 中,我的所有站点提要都会重定向到此站点的 Feedburner。
Syntax error on line 46 of /etc/apache2/sites-enabled/xxxxxxx:
RewriteCond: bad flag delimiters
Action 'configtest' failed.
The Apache error log may have more information.
failed!
答案1
我已经找到答案了,并把答案留在这里。
HTTP_USER_AGENT 条件检查任何单词的匹配,所以我只需要添加 Yahoo 而不是“Yahoo Pipes 2.0”。
正确的规则是:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(feed|wp-atom|wp-feed|wp-rss|wp-rdf|wp-commentsrss)(.+)\ HTTP/ [NC,OR]
RewriteCond %{QUERY_STRING} ^feed [NC]
RewriteCond %{HTTP_USER_AGENT} !^(FeedBurner|FeedValidator|Yahoo) [NC]
RewriteRule .* http://feeds.feedburner.com/xxxxxxx [R=307,L]
</IfModule>