Назад | Перейти на главную страницу

Блокировать определенные запросы, начинающиеся с определенной строки, используя .htaccess в apache

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"

Я получаю много таких запросов, отправляемых на мой сервер apache с разных IP-адресов. Раньше мы использовали сайт на основе aspx. Теперь это php. Эти запросы наводняют сервер. Как я могу заблокировать все запросы, содержащие строку ProductSearch.aspx?

Вы можете отправить 403 Forbidden (доступ запрещен) в случае /ProductSearch.aspx запрашивается:

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

Однако обратите внимание, что эти запросы по-прежнему будут доходить до вашего сервера и появятся в вашем access.log (но с 403 вместо 404).

Чтобы этого избежать, вам придется фильтровать перед своим веб-сервером. Это можно сделать с помощью обратного прокси, но это совсем другой момент.


Кроме того, как упоминал @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