首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >自定义404为php文件显示“未找到文件”,而不是重定向

自定义404为php文件显示“未找到文件”,而不是重定向
EN

Stack Overflow用户
提问于 2018-05-08 09:16:44
回答 2查看 3.7K关注 0票数 9

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

到目前为止,我对所有不存在的文档、文件夹、图像、等都工作得很好-打开我的自定义404页面(带output 自定义404!html)

但是,当我试图访问一个不存在.php扩展名的文件时,我得到的结果是:

在屏幕上显示“文件未找到.”,而不是被重定向到我的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 ->表示 -> not found
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-10 03:53:20

我怀疑不同之处在于php文件启动解释器,而html文件只提供服务。一个有效但可能不是唯一的或最好的解决方案是将此指令添加到主机配置文件中:

ProxyErrorOverride on
票数 6
EN

Stack Overflow用户

发布于 2019-12-01 13:27:16

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

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

ProxyErrorOverride On

谢谢。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50224464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档