您明显的文件结构:
/
.htaccess
request.php
...
errors/
junk.php
.htaccess
ErrorDocument 404 /errors/junk.php
请求.php
header('HTTP/1.1 404 Not Found', true, 404);
echo "Despite the 404 header this ~file~ actually exists as far as Apache is concerned.";
exit;
错误/垃圾.php
header('HTTP/1.1 404 Not Found', true, 404);
echo "The file you're looking for ~does not~ exist.";
echo "<pre>" . var_export($_SERVER, TRUE) . "</pre>";
exit;
http://yoursite.com/request.php将显示:
尽管有 404 标头,但就 Apache 而言,这个 ~file~ 实际上存在。
http://yoursite.com/filethatdoesntexist.php将显示:
您要查找的文件~不存在~。
[可能有助于编写自定义 404 处理程序代码的 $_SERVER 转储]
如果您有一个存在的文件,但您希望它假装它是 404,您可以在 PHP 中将重定向编写为:
header('Location: http://mysite.com/errors/junk.php');
exit;
这会将浏览器重定向到完整的 URL,或者简单地:
include('errors/junk.php');
exit;
这将使用户留在同一页面 URL,但会显示您的错误代码。