【问题标题】:How can php trigger a 404 error on nginx?php如何在nginx上触发404错误?
【发布时间】:2014-01-26 02:58:14
【问题描述】:

这应该是一个简单的问题,但我遇到了麻烦:如何让 php 触发 404 错误,以便用户看到的页面具有真正的 404 标头?我已经看到了几个答案,但没有一个对我有用,可能是因为我在 nginx 上。我试过了:

header("Status: 404 Not Found");
header("HTTP/1.0 404 Not Found");

当我尝试了所有这些(之后使用 exit() )时,服务器发送了一个 200 标头。

似乎这个问题已经在许多排列中被问过(Apache / php / 从服务器级别发送 404 等),但我很难找到尝试做我想做的事情的人。因此,如果这是重复的,我深表歉意 - 如果是,我不会感到惊讶,请告诉我。

谢谢 :) - 凯蒂

【问题讨论】:

  • 你可以看这里,php.net/manual/en/function.http-response-code.phpIf you pass no parameters then http_response_code will get the current status code. If you pass a parameter it will set the response code.
  • @Shankar - 我正在使用 php 5.3,所以这是不行的,正在寻找替代方案以及更新 php 需要什么。
  • @Mixthos 是的,刚刚尝试过,它仍然返回 200。不过还是谢谢 :)
  • 您是否在标头之前发送任何数据并关闭了错误?
  • 尝试关闭该设置并重试

标签: nginx http-status-code-404 php


【解决方案1】:

这是有效的:

第一步,在php中处理:

header("HTTP/1.0 404 Not Found");
exit();

第 2 步,删除 nginx 错误页面。我有:

error_page 404 = /404.shtml;   

结合这些,404s 会根据需要生成。

感谢@Barmar 和@Patrick Evans 提供此解决方案的每一部分! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    相关资源
    最近更新 更多