用户代理过滤器对网站内的任何页面均不起作用

用户代理过滤器对网站内的任何页面均不起作用

我在网站的 .htaccess 中创建了重写规则,以阻止用户代理为空白和用户代理为“-”的流量,除非请求来自网络服务器本身。该规则仅适用于对网站根目录 (example.com) 的请求,但不适用于网站内的页面(现有页面或其他页面)(example.com/someradompage)。网络服务器是 apache2。

.htaccess 配置

RewriteCond %{HTTP_USER_AGENT} "^$|^-$" [NC]

RewriteCond %{REMOTE_ADDR} "!^x\.x\.x\.x$" <- Public IP address of the webserver.

RewriteRule ^.* - [F,L]

我使用以下 curl 命令对此进行了测试:

curl -k -A "" https://example.com -> Returns status code 403 forbidden.

curl -k -A "" https://example.com/someradompage -> Serves the page or returns status code 404 not found if the page doesn't exist.

我怎样才能阻止这些空白和“-”用户代理对网站内部页面的请求?

答案1

显然,该规则与应用程序自动生成的另一条规则相冲突。

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

通过将上面的规则放在此规则之前,它按预期工作。不过,不确定为什么会发生这种冲突。

相关内容