location ~* ajax.php {
if ($args ~ "action=query_new") {
return 404;
}
}
我有一个ajax.php文件存储在站点example.com的测试目录中,我希望返回包含args/查询字符串action=query_new的所有ajax.php请求的404错误。我写了上面的代码。代码可以工作,但它使ajax.php文件不可用,也就是说,当上面的代码运行时,ajax.php没有执行。我的站点使用这个文件来处理其他查询字符串。我该如何解决这个问题?
发布于 2015-12-04 03:57:00
在您的nginx
配置中,您将有一个类似于location ~ [^/]\.php(/|$) { ... }
或简单location ~ \.php$ { ... }
的位置块。这包含了将php文件发送到上游解释器所需的代码。
您的新位置块优先,并防止任何与ajax.php
匹配的文件以php的形式执行。
一种解决方案是复制将php文件发送到上游解释器到两个位置块所需的代码。这可以通过将这些指令移动到一个单独的文件并使用include
指令将它们加载到每个块中来实现。类似于:
location ~* ajax.php$ {
if ($arg_action = "query_new") { return 404; }
include path/to/my_php_config;
}
location ~* \.php$ {
include path/to/my_php_config;
}
include
指令是记录在这里。
https://stackoverflow.com/questions/34084350
复制相似问题