在PHP 5.2 网站中打开友好网址(和 mod_rewrite)的网页的错误处理过程中,我遇到了一些问题。我从框架管理 url 规则,所以我需要将所有请求移动到 index.php。这是最简单的部分(并且就像一个魅力)。现在,从同一个框架中,我碰巧将 http 状态代码扔到了标头,然后是 I exit()
,所以没有输出,但标头已发送给用户。现在问题是其中之一(或两者):
状态码是在处理开始后发送的,因此 Apache 与此无关(如果我弄错了,请纠正我)。
每个请求(甚至可能是 403 和 500?)都被重写为 index.php,因此
ErrorDocument
永远不会被读取,因为一切看起来都很正常(很可能是错误的)
这是我的.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
ErrorDocument 400 /error/400
ErrorDocument 403 /error/403
ErrorDocument 404 /error/404
ErrorDocument 405 /error/405
ErrorDocument 408 /error/408
ErrorDocument 500 /error/500
ErrorDocument 502 /error/502
ErrorDocument 504 /error/504
我可以解析的另一个 URI在哪里/error/"number"
,但它也可以是静态页面。现在,问题:
有什么方法可以让这些错误请求(在请求启动后抛出)使用ErrorDocument
?
PS:作为旁注,Chrome 显示一个标准的“chromy”禁止/未找到/等页面,而 Firefox 只是留下一个空白屏幕。