对于我的网页,我有一个.htaccess
文档,看起来像这样
<Files .htaccess>
order allow,deny
deny from all
</Files>
ErrorDocument 404 /websites/404/index.php
据我所知,您可以通过添加另一行来进一步包含ErrorDocument
。例如
<Files .htaccess>
order allow,deny
deny from all
</Files>
ErrorDocument 404 /websites/404/index.php
ErrorDocument 503 /websites/maintenance/index.php
但是,当我尝试使用以下代码行ErrorDocument 451 /websites/451/index.php
为HTTP 451添加页面并重新加载页面时,我得到Server error! Error 500
。我后来发现这是因为XAMPP不再使用.htaccess
文件中的文件夹,只能通过移除ErrorDocument
error 451
来解决错误。造成这种情况的原因是什么?如何解决?
注意
我也发现error 418: I'm a teapot
也会发生这种情况
答案 0 :(得分:6)
即使有很多HTTP状态代码(officially maintained by the IANA),但并非所有网络服务器都支持所有这些代码。从Apache 2.4开始,Apache不支持状态代码418和451并将其静默转换为错误500.
Apache 2.4中支持的状态代码的最新增加是414和501以及400的崩溃预防(来自Apache 2.4 change log):
核心:支持HTTP 501和414状态代码的自定义ErrorDocuments。 PR 57167 [Edward Lu]
核心:防止服务器因CONNECT请求无效而崩溃 状态代码400的自定义错误页面,它使用服务器端包含。 PR 58929 [Ruediger Pluem]
请参阅list of supported HTTP status codes(从Apache 2.4.4开始)。
查看有关remapping of custom status codes to 500 errors的较早的错误(针对2.2提交)。
请参阅此previous question regarding a similar problem(以及Apache 2.2)。
答案 1 :(得分:0)
从指向Wikipedia的链接指出:
它(451)于2015年12月18日获得IESG批准。[8]它是 2016年2月发布为RFC 7725。
451状态可能是最新的,以至于Apache(或mod_rewrite所依赖的其他供应商)尚未包含对状态代码的支持。有一个June 2016
错误报告,例如Red Hat Enterprise - httpd-2.4.6-40
看起来仍处于打开状态:https://bugzilla.redhat.com/show_bug.cgi?id=1343582