使用404重定向不起作用

时间:2012-11-13 12:44:46

标签: php

我有一个代码应该重定向,以防它没有正确设置一些请求参数。

          if(!is_numeric($_GET['id'])){
                         header("HTTP/1.0 404 Not Found");
                    header('Location: '.$url);
                    exit();
               }

问题是,无论何时我使用Firefoxes插件检查实时HTTP标头,我都会看到302临时重定向。这是为什么?为什么没有给出404响应?

3 个答案:

答案 0 :(得分:4)

发送带有Location状态代码的404标头是没有意义的。

Location表示“你要求的是在这里”

404表示“我没有你要求的东西”

这两个陈述是不相容的。

如果您想发送一个特定的人类可读的错误解释,那么就像输出任何其他类型的文档一样输出它。如果你愿意,你可以include()。不要试图重定向到它。

答案 1 :(得分:2)

  

问题是每当我查看Firefoxes插件时,都会使用实时HTTP   标题,我看到302临时重定向。这是为什么?为什么没有404   给出了回应?

不确定您要在此处做什么,但以下内容将提供您的目的。

if (! is_numeric($_GET['id'])) {
    header('Location: ' . $url, true, 404);
    exit();
}

答案 2 :(得分:0)

您只能发送您正在尝试的其中一个标题。

如果是404 - 这将显示由您的Web服务器配置定义的错误相关错误页面。

要做你想做的事情......你需要将服务器的404从普通的html修改为php页面并找出从那里显示的内容(你可以根据引用者等)。

在“动态”404页面中,您可以根据需要进行重定向。