1

我想将所有不存在的 GET 参数(例如 www.example.com?afasfnk=)重写为 404 页面。所以我只需要获取所有现有的 GET 参数并将它们包含到我的 .htaccess 中。就像这样:

RewriteCond %{QUERY_STRING} (^|&)=(.*)
RewriteCond %{QUERY_STRING} !(^|&)=(aget|bget)(&|$)
RewriteRule ^(.*) - [F]

问题是如何最有效地找到它们。Fe 在我的 cms 我有

$filedir = $_GET['a'];

我需要提取这个“a”值等等..

4

2 回答 2

2

没有自动的方法。如果您的源 PHP 在 Windows 操作系统中,您应该安装UltraEdit或类似的东西,并在所有源文件中搜索“ $_GET[ ”字符串,并手动注册所有变量名。最后,您将不需要的单词放入您的 apache 禁用单词列表中。

在 Unix OS 中,您可以在 DocumentRoot 目录下执行以下操作:

grep -R '$_GET\[' .

另一种可能性是在 apache 访问日志文件中搜索这些词,例如

vi access.example.com.log
于 2013-10-18T08:25:35.153 回答
0

您应该在您的应用程序中实现这样的重定向,而不是在服务器中。没有自动方法来更新 .htaccess 中使用的参数列表,并且您无缘无故地限制了应用程序中请求参数的使用。

另一方面,如果无法在应用程序中评估匹配的请求参数,您可以直接显示 404 页面或重定向到一个(参见:)header()

于 2013-10-18T08:31:23.700 回答