自定义错误响应
Apache可以让网站管理员自己自定义对一些错误和问题的响应。
自定义的响应可以定义为当服务器检测到错误或问题时才被激活。
如果一个脚本崩溃并产生"500 Server Error"响应,那么这个响应可以被更友好的提示替换或者干脆用重定向语句跳到其他的URL(本地的或外部的)。
ErrorDocument使用了外部重定向(任何类似于http:
开头的形式,哪怕它仍指向同一个服务器),将没有任何变量被指定。
ErrorDocument进行了相应的设置后,将可以在.htaccess
文件中使用AllowOverride
指令。
以下是一些示例...
ErrorDocument 500 /cgi-bin/crash-recover
ErrorDocument 500 "Sorry, our script crashed. Oh dear"
ErrorDocument 500 http://xxx/
ErrorDocument 404 /Lame_excuses/not_found.html
ErrorDocument 401 /Subscription/how_to_subscribe.html
语法如下:
ErrorDocument <3位错误代码> <action>
<action>可以代表:
- 用于显示的用双引号(")界定的文字。
- 作为重定向目的外部URL
- 作为重定向目的本地URL
ErrorDocument指定了一个到本地CGI脚本的重定向,该脚本应当在它的输出中包含一个"Status:
"头字段以确保将导致调用它的错误条件始终返回客户端。举例来说,一个Perl ErrorDocument
脚本可能包含如下内容:
...
print "Content-type: text/html\n";
printf "Status: %s <中断条件>\n", $ENV{"REDIRECT_STATUS"};
...
...
print "Content-type: text/html\n";
printf "Status: %s <中断条件>\n", $ENV{"REDIRECT_STATUS"};
...
如果该脚本专门用于处理一个特定的错误条件,比如:404 Not Found
,它就可以使用特定的代码和错误文本进行替代。
需要注意的是如果应答包含一个"Location:
"头(为了进行一个客户端重定向),脚本必须发出一个适当的"Status:
"头(比如:302 Found
)。否则"Location:
"头可能无效。