Ryf*_*lex 9 php apache .htaccess cpanel custom-error-pages
我试图让我的Web服务器已自定义错误文档/页,但与 PHP代码包含在其中,而不会重新导向它们已抛出错误的页面了.
假设我们正在导航http://website.com/pages/1并且它是抛出错误500,默认情况下页面只是一个空白的白页,文本" Error 500 (Internal Server Error)"看起来像这样:
正如您从上面所看到的,它没有重定向远离抛出错误的页面.我希望此页面看起来是"网站的一部分",但其中包含PHP内容.
我不能通过编辑您在下面看到的页面在cPanel中的错误页面中包含PHP内容:
如果我要编辑上面的错误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 而不重定向
有没有办法通过root做到这一点(我可以让我的主机做某事,如果有的话?)
正如其他人已经回答的那样,这应该有效:
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 将向客户端发送重定向,告诉它在哪里可以找到该文档,即使该文档最终位于同一服务器上。
上述内容对您不起作用这一事实意味着以下几点之一:
你能检查一下那些东西吗?
也可能有助于了解您使用的 Apache 版本?
您是否还尝试过使用普通的 500.html 文件来看看这是否可以在不重定向的情况下工作?理论上,500.php 文件也应该没问题,但缩小范围会很有趣(并且还会显示是否选择并使用了对 500.html 的更改,或者它是否仍然指向 500.php,这可能会显示这是从其他配置中获取的,而不是您想象的)。