Блокировка неверных запросов с помощью файла .htaccess - PullRequest
2 голосов
/ 23 ноября 2011

У меня есть сайт, на который попадают пользователи, попадающие на варианты этого URL /index.php?s=

Я пытаюсь заблокировать все запросы к следующей строке, которая должна избавить от всех спамеров php? S =

Проблема, которая у меня возникла, заключается в том, что?и = в файле htaccess являются защищенными символами, и я просто не могу получить правильный синтаксис.Как я могу использовать php? S = в следующих сценариях?

Я пробовал

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{REQUEST_URI} ^.(*php?s=).* [NC]
 RewriteRule ^(.*)$ - [F,L]
</IfModule>

и

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{REQUEST_URI} ^.*php?s=$1&%{QUERY_STRING}.* [NC]
 RewriteRule ^(.*)$ - [F,L]
</IfModule>

и

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{THE_REQUEST} ^.*(php?s=$1&%{QUERY_STRING}).* [NC]
 RewriteRule ^(.*)$ - [F,L]
</IfModule>

Но ничего не работает.Помогите пожалуйста!

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

1001 * попробовать *

#all .php requests with s= in querystring
RewriteCond %{REQUEST_URI} ^.+\.php$ [NC]
RewriteCond %{QUERY_STRING} ^s=.*$   [NC]
RewriteRule . - [F,L]

Если вы хотите запретить s= в любом месте строки запроса, замените 2-ю перезаписанную секунду выше на

#block s= in any location
RewriteCond %{QUERY_STRING} ^(.*&)?s=.*$ [NC]
0 голосов
/ 23 ноября 2011

Вы также можете попытаться заблокировать их, прежде чем они приступят к выполнению чего-либо

.htaccess пример

...