首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为nginx中的特定URL返回404

为nginx中的特定URL返回404
EN

Stack Overflow用户
提问于 2015-12-04 08:58:44
回答 1查看 1.3K关注 0票数 2
代码语言:javascript
代码运行次数:0
运行
复制
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没有执行。我的站点使用这个文件来处理其他查询字符串。我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-04 11:57:00

在您的nginx配置中,您将有一个类似于location ~ [^/]\.php(/|$) { ... }或简单location ~ \.php$ { ... }的位置块。这包含了将php文件发送到上游解释器所需的代码。

您的新位置块优先,并防止任何与ajax.php匹配的文件以php的形式执行。

一种解决方案是复制将php文件发送到上游解释器到两个位置块所需的代码。这可以通过将这些指令移动到一个单独的文件并使用include指令将它们加载到每个块中来实现。类似于:

代码语言:javascript
代码运行次数:0
运行
复制
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指令是记录在这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34084350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档