自定义404显示"文件未找到"用于php文件而不是重定向

时间:2018-05-08 01:16:44

标签: php apache .htaccess http-status-code-404 vps

我正在尝试创建自定义404错误页面。

到目前为止,我对所有未发送的文档,文件夹,图像,htmls等工作得很好 - 打开我的自定义404页面(输出自定义404!

但是,当我尝试访问不存在.php扩展名的文件时,我得到了这个:

404 response

...是" 找不到文件。"在屏幕上,而不是重定向到我的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/ - &gt;打开正确的404 /回声自定义 404!
  • myurl.com/imagethatdoesntexist.jpg - &gt;打开正确的404 /回声 自定义404!
  • myurl.com/htmlthatdoesntexist.html - &gt;打开正确的404 /回声 自定义404!
  • myurl.com/phpthatdoesntexist.php - &gt;没有打开正确的404 - &gt;说 找不到文件

2 个答案:

答案 0 :(得分:0)

我怀疑区别在于php文件会在HTML文件刚刚投放时启动解释程序。一种可行但并非唯一或最佳的解决方案是将该指令添加到主机配置文件中:

ProxyErrorOverride on

答案 1 :(得分:0)

发生这种情况是因为您可能已启用了mod_proxy_fcgi,并且正在使用PHP-FPM。代理中的默认错误页面为File not found。因此,将以下内容添加到您的httpd.conf或apache2.conf中,而不是您的.htaccess中。

它使您的.htaccess文件的ErrorDocument指令覆盖默认的代理错误页面。

ProxyErrorOverride On

谢谢。