.htaccess 阻止用户代理的Htaccess条目不工作

frebpwbc  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(93)

我的.htaccess文件中的用户代理阻止代码停止工作了,尽管我最近没有对它做任何修改。为了解决这个问题,我在FF中修改了用户代理,并创建了一个子目录,其中有自己的.htaccess文件和一个php文件。在那个文件中,我添加了代码来显示$_SERVER ['USER_AGENT']字符串。它显示了我正在使用的UA,如下所示:

Mozilla/5.0 (compatible; Konqueror/4.2; Linux) KHTML/4.2.96 (like Gecko)

在我的.htaccess文件中,我有以下内容,但当我访问该位置时,我没有被阻止。

RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} "^Konqueror$" [NC]
    RewriteRule ^ - [F]

我添加了以下内容,与我的真实的IP,在上面验证重写工作后,它阻止了我:

RewriteCond %{REMOTE_ADDR} ^12\.23\.45\.666
    RewriteRule ^ - [F]

有人知道问题出在哪里吗?

uurity8g

uurity8g1#

由于RewriteCond中匹配模式的开头是“^”,结尾是“$”,所以这是不可行的。这两个特殊字符将正则表达式锚定在主题的开头和结尾,因此搜索字符串也是如此。因此,您的条件只匹配包含确切字符串“Konqueror”的标题,而前后没有任何内容。这 * 不是 * 您想要的。
“Konqueror”一词出现在您作为用户代理发送的字符串的中间。因此,您希望匹配任何 * 包含 *“Konqueror”一词的字符串。只要将这两个特殊字符都去掉,您就满意了。
您也可以删除引号字符,因为它们不是必需的。
因此,只需使用该条件:

RewriteCond %{HTTP_USER_AGENT} Konqueror [NC]

相关问题