在 apache 中使用 .htaccess 阻止以特定字符串开头的某些请求

在 apache 中使用 .htaccess 阻止以特定字符串开头的某些请求
54.215.234.39 - - [02/Apr/2014:10:51:35 -0400] "GET /ProductSearch.aspx?qs=94307 HTTP/1.1" 404 11414 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0"

我收到很多从各种 IP 地址发送到我的 Apache 服务器的请求。我们以前使用基于 aspx 的网站。现在使用的是 php。这些请求淹没了服务器。我如何才能阻止所有包含字符串“ProductSearch.aspx”的请求?

答案1

您可以在请求的情况下发送403 Forbidden(访问被拒绝) :/ProductSearch.aspx

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/ProductSearch.aspx
RewriteRule ^(.*)$ - [F,L]

但是,请注意,这些请求仍将到达您的服务器,并会出现在您的 中access.log(但用403而不是404)。

为了避免这种情况,您必须在 Web 服务器之前进行过滤。这可以通过反向代理来实现,但这是另一回事。


此外,正如@Michael Hampton 在评论中提到的,您可以将所有请求*.aspx文件的请求重定向到*.php页面。

(例如假设 已yourpage.aspx被 取代yourpage.php):

RewriteEngine On
RewriteRule  ^(.*).aspx$ $1.php [R=301]

这将重定向

  • http://mydomain.com/ProductSearch.aspx?qs=94307

  • http://mydomain.com/ProductSearch.php?qs=94307

相关内容