htaccess在包含HTTP 451的参数时“中断”

时间:2016-08-07 07:33:05

标签: php html .htaccess dynamic-websites

对于我的网页,我有一个.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.phpHTTP 451添加页面并重新加载页面时,我得到Server error! Error 500。我后来发现这是因为XAMPP不再使用.htaccess文件中的文件夹,只能通过移除ErrorDocument error 451来解决错误。造成这种情况的原因是什么?如何解决?

注意
我也发现error 418: I'm a teapot也会发生这种情况


编辑
仅提供有关我正在使用的软件的更多信息。我正在使用

  • XAMPP控制面板v3.2.2
  • Apache 2.4.17 - 这是XAMPP附带的版本

2 个答案:

答案 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