阅读了一些教程后,我创建了一个错误文件,该文件应该显示而不是 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 已启用