分类: BSD
2009-06-23 18:57:25
今天无意间想起来了以前做过练习,自定义404错误页面,一直没有成功,就再试了一次,我的平台是FREEBSD,
apache版本:httpd -v
Server version: Apache/2.2.6 (FreeBSD)
Server built: Oct 26 2007 15:11:39
已经配置完成的.htaccess文件,如下所示:
ErrorDocument 404 /Error.html
AuthName "MRTG Authcation"
AuthType basic
AuthUserFile /usr/local/passwds
require valid-user
这个目录是一个虚拟目录,ErrorDocument 404 /Error.html
那么访问时会发现出现500错误,
查看日志,发现是:
报告“500 Internal Server Error”,查看/var/log/httpd/error_log,报告“/www/users/test.com/.htaccess: Options not allowed here”,或者报告“ErrorDocument not allowed here”
这是由于客户在自己的网站的目录内放置了.htaccess文件。使用.htaccess文件,可以对网站目录的一些特性做子定义,如调整默认首页顺序、设置是否允许目录浏览、对网站目录做用户验证等功能进行定义。
而Prima系统所用的apache,出于虚拟主机的安全考虑,默认是禁止用户使用.htaccess文件对系统功能做自定义的。所以访问这个站点会出现500 Internal Server Error的错误,同时在/var/log/httpd/error_log中也会看到相应的报错。
比如报告“Options not allowed here”,则是用户在.htaccess文件中,使用了Options参数对自己的站点做了定义。所以我们需要在apache的配置中允许当前用户使用Options参数方可。如果报告“ErrorDocument not allowed here”,则是用户在.htaccess文件中使用了ErrorDocument参数。所以我们需要在apache的配置文件中,允许这个站点使用ErrorDocument参数方可。
按以下方法定义目录
ServerAdmin
DocumentRoot "/usr/local/www/mrtg/"
Allowoverride Fileinfo Authconfig
注意:
1) Allowoverride参数必须被夹在
2) 请不要对/www目录设置Allowoverride参数,一定要对单个站点目录做定义,否则会有安全隐患
3) 不要以为就此完了,你可能会发现404.html根本跳转不到他上面去,嘿嘿,原因是你的404.html文件太小了,IE认为找不到,又是404错误。如果404.html的小于512字节的话,那么IE会认为这个错误页面不够“友好”,会忽视掉的。
方法二:
ee /usr/local/etc/apache22/httpd.conf
然后添加:
ErrorDocument 404
方法二会更好一些!