使用.htaccess文件阻止错误请求

时间:2011-11-23 01:42:11

标签: apache .htaccess spam-prevention

我的网站受到用户点击此网址变化的影响 /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 个答案:

答案 0 :(得分:1)

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

如果你想在任何查询字符串位置阻止s=,请用

替换上面的第二个重写
#block s= in any location
RewriteCond %{QUERY_STRING} ^(.*&)?s=.*$ [NC]

答案 1 :(得分:0)

您也可以尝试在执行任何操作之前阻止它们

.htaccess example