我想将所有不存在的GET参数(如www.example.com?afasfnk=)重写为404页面。 所以我需要的是获取所有已存在的GET参数并将它们包含在我的.htaccess中,如下所示:
RewriteCond %{QUERY_STRING} (^|&)=(.*)
RewriteCond %{QUERY_STRING} !(^|&)=(aget|bget)(&|$)
RewriteRule ^(.*) - [F]
问题是如何最有效地找到它们。 F.E.在我的cms我有
$filedir = $_GET['a'];
我需要提取这个“a”值等等。
答案 0 :(得分:2)
没有自动方式。如果您在Windows操作系统中拥有源PHP,则应安装UltraEdit或类似内容,并在所有源文件中搜索“ $ _ GET [”字符串,并手动注册所有变量名称。最后你把不受欢迎的词放在你的apache禁词列表中。
在Unix OS中,您可以在DocumentRoot目录下执行:
grep -R '$_GET\[' .
另一种可能性是在apache访问日志文件中搜索这些单词,例如
vi access.example.com.log
答案 1 :(得分:0)
您应该在应用程序中实现此类重定向,而不是在服务器中。 没有自动方法来更新.htaccess中这样的已使用参数列表,并且您无限制地限制应用程序中请求参数的使用。
另一方面,如果在应用程序中无法评估匹配的请求参数,您可以直接显示404页面或重定向到一个页面(see: header()
)。