我有一个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错误?
答案 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
应该工作