Я использую 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!
Я понял это и оставляю ответ здесь.
Условие 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>