测试 htaccess 是否存在 500 服务器错误,但无实际错误

测试 htaccess 是否存在 500 服务器错误,但无实际错误

阅读了一些教程后,我创建了一个错误文件,该文件应该显示而不是 500 服务器错误。我已将其添加到域的根目录中,并在 .htaccess 的底部添加了以下行:

ErrorDocument 500 /error.html

现在的问题是,当网站真的崩溃时,我如何在实时网站上测试它并确保出现错误页面?

非常感谢您的任何建议。

答案1

http500我在 www 根目录创建了一个名为

我将.htaccess以下内容放入该文件夹中:

Redirect 500 /http500

然后我打开了它 http://example.com/http500

您可以尝试不同的错误页面

Redirect 501 /http500

或者

Redirect 502 /http500

或者

Redirect 503 /http500

它不需要重新启动任何服务器,更改会立即应用。

资料来源:
https://stackoverflow.com/a/8687536/534883
https://bibwild.wordpress.com/2013/06/05/how-to-make-apache-fake-a-500-http-response/

答案2

确保当网站真的崩溃时出现错误页面?

这取决于你所说的“网站真的崩溃了”是什么意思。“500 内部服务器错误”是一种很普通的错误...如果服务器因某种原因无法处理请求,并且没有其他合适的响应,则默认为 500 错误响应。

这里的“问题”是,对于大多数不受控制500 错误,定义 500 ErrorDocument晚的为时.htaccess已晚,无法产生任何效果。

如果在服务器配置或容器中较早定义了 500 ErrorDocument,则可以捕获更多 500 错误响应 -<VirtualHost>应该在此处定义。但即便如此,根据错误的严重程度,自定义 ErrorDocument 可能仍不会被调用。

您可以按照@TimoHuovinen 的建议“人为地”触发 500 响应,这将触发您的自定义 500 ErrorDocument,但是,当您的“网站真的崩溃”时是否会触发它则完全是另一回事。

答案3

我知道这是一个老问题,但我目前面临同样的问题,所以我想分享我的(简单)解决方案而不创建子文件夹

自从

Redirect Err# /path

导致我无法启动服务器,我找到了一个更好的解决方案。

如果您使用自定义错误文档,例如:

ErrorDocument 400 /res/err/400.php
ErrorDocument 401 /res/err/401.php
ErrorDocument 403 /res/err/403.php
ErrorDocument 404 /res/err/404.php
ErrorDocument 500 /res/err/500.php

您只需将以下内容添加到您的 .htaccess(或您的 VirtualHost 或 Server 配置)即可

RewriteEngine on

# To test our custom error pages
RewriteRule ^/err400(.*)$ https://your.servername.dev/res/err [NC,R=400,L]
RewriteRule ^/err401(.*)$ https://your.servername.dev/res/err [NC,R=401,L]
RewriteRule ^/err403(.*)$ https://your.servername.dev/res/err [NC,R=403,L]
RewriteRule ^/err404(.*)$ https://your.servername.dev/res/err [NC,R=404,L]
RewriteRule ^/err500(.*)$ https://your.servername.dev/res/err [NC,R=500,L]

现在,您可以通过在浏览器中输入 URL 来测试错误页面,如下所示:

http://your.server.dev/err400

或者:

https://your.servername.dev/err403

希望有帮助 B)

附录:

确保 mod_rewrite 已启用

答案4

看看这个:

如何在 PHP 中触发 500 内部服务器错误?

https://stackoverflow.com/a/8687536/534883

相关内容