【发布时间】:2018-10-17 20:46:14
【问题描述】:
我正在尝试创建自定义 404 错误页面。
到目前为止,我对所有不存在的文档、文件夹、图像、html 等都非常有效 - 打开我的自定义 404 页面(输出 自定义 404!)
但是,当我尝试访问扩展名为 .php 且不存在的文件时,我得到以下信息:
...成为屏幕上的“File not found.”,而不是被重定向到我的 404 文档。
我的 .htaccess
RewriteEngine On
ErrorDocument 404 /404.php
我的 404.php
<?php
header("HTTP/1.0 404 Not Found");
include '404.html';
die();
?>
我的 404.html
<!DOCTYPE html>
<html>
<head>
<title>Custom 404 | Not found!</title>
</head>
<body>
Custom 404!
</body>
</html>
编辑
为了更清楚地了解这里发生了什么。
我相信路径和 .htaccess 工作得很好,但是 php 必须有一些技巧。以下是几个例子:
当我尝试打开一些在我的服务器上不存在的文件时:
- myurl.com/folderthatdoesntexist/ -> 打开正确的 404 / 回显自定义 404!
- myurl.com/imagethatdoesntexist.jpg -> 打开正确的 404 / 回声 自定义 404!
- myurl.com/htmlthatdoesntexist.html -> 打开正确的 404 / 回声 自定义 404!
- myurl.com/phpthatdoesntexist.php -> 没有打开正确的 404 -> 说 找不到文件
【问题讨论】:
-
它说“ErrorDocument 404 /404.php”但是404页面是一个HTML文件?出了点问题。为什么不:
ErrorDocument 404 /404 -
@user770 这到底有什么不对?他将错误页面重定向到 404.php 并且 php 文件包含 404.html。我同意这是一种奇怪的方法,但我不会说它在技术上是错误的。
-
你说“对所有不存在的文档都很好” - 但是“当我尝试打开不存在的php文件时” - 我糊涂了。您要打开哪个 php 文件?另外,您确定路径正确吗?您可能需要使用完整的服务器地址。这是在本地运行还是托管?
-
对!他错过了这个:
include ($_SERVER['DOCUMENT_ROOT']."full/path/to/404.html"); -
@user770 只有 OP 得到通知,并且所有 cmets,无论是否 ping 通。当其他成员互相评论时,则需要直接 ping。
标签: php apache .htaccess http-status-code-404 vps