2011-11-23 5 views
2

J'ai un site qui est d'être frappé par les utilisateurs de cette frappant les variations URL /index.php?s=Blocking requêtes mal avec le fichier .htaccess

Je suis en train de bloquer toutes les requêtes à la chaîne suivante qui devrait se débarrasser de tous les spammeurs php? s =

Le problème que je semble avoir est le? et = dans le fichier htaccess sont des caractères protégés et je ne peux pas obtenir la syntaxe correcte. Comment puis-je utiliser php? S = dans les scénarios suivants?

J'ai essayé

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

et

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

et

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

Mais rien ne fonctionne. Aidez-moi, s'il vous plaît!

Répondre

1

essayer

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

Si vous voulez éviter s= dans un endroit querystring remplacer le 2ème rewritecond ci-dessus avec

#block s= in any location 
RewriteCond %{QUERY_STRING} ^(.*&)?s=.*$ [NC] 
+0

Remerciements s! Cela a bien fonctionné. Les spammeurs sont bloqués! – Jake

0

Vous pouvez également essayer de les bloquer avant d'arriver au point d'exécuter quoi que ce soit

.htaccess example