在cPanel中创建自定义PHP错误页面,而不将它们从引发错误的页面重定向

Ryf*_*lex 9 php apache .htaccess cpanel custom-error-pages

我试图让我的Web服务器已自定义错误文档/页,但 PHP代码包含在其中,而不会重新导向它们已抛出错误的页面了.

假设我们正在导航http://website.com/pages/1并且它是抛出错误500,默认情况下页面只是一个空白的白页,文本" Error 500 (Internal Server Error)"看起来像这样:

http://i.imgur.com/WLO7JkL.png

正如您从上面所看到的,它没有重定向远离抛出错误的页面.我希望此页面看起来是"网站的一部分",但其中包含PHP内容.

我不能通过编辑您在下面看到的页面在cPanel中的错误页面中包含PHP内容:

http://i.imgur.com/jtYjHj8.png

如果我要编辑上面的错误500页,下面的内容http://website.com/pages/1将会重定向到http://website.com/500.shtml然后重定向到 http://website.com/500.php

希望它重定向,否则它意味着刷新页面本质上只会刷新500.php页面而不是刷新/pages/1

<script language="javascript">
    window.location.href = "http://www.website.com/500.php"
</script>
<meta http-equiv="refresh" content="0;URL='http://website.com/500.php'" />  
Run Code Online (Sandbox Code Playgroud)

同样存在同样的问题,只是没有2链重定向,而只是在.htaccess文件中使用以下内容进行重定向.

ErrorDocument 400 http://website.com/400.php
ErrorDocument 401 http://website.com/401.php
ErrorDocument 403 http://website.com/403.php
ErrorDocument 404 http://website.com/404.php
ErrorDocument 500 http://website.com/500.php
Run Code Online (Sandbox Code Playgroud)

当前结果:重定向到/500.php

预期结果:在http://website.com/pages/1上/中显示500.php 而不重定向

如何使用php内容自定义错误页面而不使其重定向远离引发错误的页面?

有没有办法通过root做到这一点(我可以让我的主机做某事,如果有的话?)

Bar*_*ard 3

正如其他人已经回答的那样,这应该有效:

ErrorDocument 500 /500.php
Run Code Online (Sandbox Code Playgroud)

如果您没有指定完整的 URL,它只会显示页面(内部重定向),如果您指定了完整的 URL,它会向客户端发出重定向。Apache 在此描述了这一点:http ://httpd.apache.org/docs/2.4/mod/core.html#errordocument

请注意,当您指定指向远程 URL 的 ErrorDocument(即前面带有 http 等方法的任何内容)时,Apache HTTP Server 将向客户端发送重定向,告诉它在哪里可以找到该文档,即使该文档最终位于同一服务器上。

上述内容对您不起作用这一事实意味着以下几点之一:

  1. 您做错了,尽管您声称没有指定完整的 URL,但仍然指定了完整的 URL。
  2. Cpanel 正在添加完整的 URL(不确定您如何编辑 .htaccess 文件或是否通过上面的 GUI 完成)。
  3. 您的 .htaccess 文件被忽略(可能是因为您正在 GUI 中设置值,或者可能是因为 FileInfo 未服务器级别设置,因此无法在 .htaccess 文件中指定(请参见此处:http ://httpd.apache.org /docs/2.4/custom-error.html),在这种情况下,它必须从其他配置中获取完整的 URL 本身。
  4. 500.php 脚本本身正在执行重定向(如果保留日志并查看是否返回一页或两页,那么从开发人员工具中应该是显而易见的)。
  5. Apache 中有一个错误(我和其他人都不知道)。
  6. 魔法

你能检查一下那些东西吗?

也可能有助于了解您使用的 Apache 版本?

您是否还尝试过使用普通的 500.html 文件来看看这是否可以在不重定向的情况下工作?理论上,500.php 文件也应该没问题,但缩小范围会很有趣(并且还会显示是否选择并使用了对 500.html 的更改,或者它是否仍然指向 500.php,这可能会显示这是从其他配置中获取的,而不是您想象的)。