.htaccess阻止User Agent规则失效问题排查求助
问题原因及解决办法
你的UA阻止规则失效的核心原因是正则表达式匹配范围错误:
你当前的规则RewriteCond %{HTTP_USER_AGENT} "^Konqueror$" [NC]里,^和$是正则的起始和结束锚点,意思是要求整个User Agent字符串完全等于Konqueror才会触发阻止。但实际你的UA是Mozilla/5.0 (compatible; Konqueror/4.2; Linux) KHTML/4.2.96 (like Gecko),Konqueror只是其中的一段内容,所以规则无法匹配。修改后的正确规则(二选一即可):
- 只要UA中包含Konqueror就阻止:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} Konqueror [NC] RewriteRule ^ - [F] - 更精准匹配Konqueror版本号的格式(避免误匹配其他含Konqueror字段的UA):
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} Konqueror/[0-9.] [NC] RewriteRule ^ - [F]
- 只要UA中包含Konqueror就阻止:
补充说明:
你添加的IP阻止规则能生效,是因为IP字符串完全符合^12\.23\.45\.666的锚点匹配,所以规则正常触发。
内容的提问来源于stack exchange,提问作者user3052443
相关产品推荐
相关产品推荐

