我在网站的 .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]
通过将上面的规则放在此规则之前,它按预期工作。不过,不确定为什么会发生这种冲突。