htaccess RewriteCond OR标志未按预期工作

时间:2017-10-26 14:18:48

标签: wordpress .htaccess

我有一个wordpress网站,我试图根据其字符串名称的部分过滤掉某些使用者

我正在使用它:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %[HTTP_USER_AGENT] .*useragent3.* [NC, OR]
RewriteCond %[HTTP_USER_AGENT] .*useragent2.* [NC, OR]
RewriteCond %[HTTP_USER_AGENT] .*useragent1.* [NC]
RewriteRule ^.* - [F,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

这样做,我得到500错误,我注意到如果我删除 OR 标记我摆脱了500错误并且网站显示但它不会过滤使用者。这是正常行为,因为 OR 标志将OR语句添加到我的RewriteCond查询中,因为默认值为 AND ,并且需要使用useragent名称来匹配所有这些字符串。

问题仍然存在,为什么我在使用OR时会出现500错误?

1 个答案:

答案 0 :(得分:1)

删除标记中的空格

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %[HTTP_USER_AGENT] .*useragent3.* [NC,OR]
RewriteCond %[HTTP_USER_AGENT] .*useragent2.* [NC,OR]
RewriteCond %[HTTP_USER_AGENT] .*useragent1.* [NC]
RewriteRule ^.* - [F,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

应该工作