0

我有一个代码

<?php
header('Location: http://mydomain/404', true, 404);
exit;
?>

什么都不做。输出白屏,我可以看到 404 响应状态,但没有重定向。Ubuntu 12.04 / PHP 5.3

使用 Debian Squeeze / PHP 5.3 在服务器上出现同样的问题

我做错了什么?

更新。

它是获取状态和路径的函数的一部分。我需要重定向到具有指定状态代码的指定页面。不直接显示404页面。

4

3 回答 3

8

您不能对 404 进行位置重定向。正确的行为是将 404 页面包含在带有 404 标头的结果中。

<?
header( $_SERVER['SERVER_PROTOCOL']." 404 Not Found", true, 404 );
include('404.php');
?>

除非 404 页面在另一个域上。在这种情况下,您可以简单地使用没有 404 的位置重定向,就像 Apache 默认情况下找不到您的错误文档时所做的那样。

于 2013-04-25T06:11:41.680 回答
4

它要么是 404 Not Found 要么是 302 重定向,不能同时是两者。如果您想发出此页面不存在的信号,请使用 404。如果您想重定向用户,请使用 302。

于 2013-04-25T06:14:31.953 回答
0

通过 .htaccess 执行此操作

<IfModule mod_rewrite.c>
RewriteEngine On
ErrorDocument 404 /404.html
</IfModule>
于 2013-04-25T06:13:57.977 回答