我正在运行本地测试服务器(在 Ubuntu 10.04 上),但出于某种原因,我似乎没有看到我的自定义403
/404
错误消息。以下是一些命令输出:
[ /var/www ] # ls -al
:
drwxr-xr-x 5 www-data www-data 4096 2010-07-31 18:40 .
drwxr-xr-x 16 root root 4096 2010-05-14 19:56 ..
-rwxr-xr-x 1 www-data www-data 493 2010-07-31 18:32 403.html
-rwxr-xr-x 1 www-data www-data 493 2010-07-31 18:10 404.html
-rwxr-xr-x 1 www-data www-data 56 2010-07-31 18:25 .htaccess
[ /var/www ] # cat .htaccess
:
ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
我完全被难住了——通过谷歌也无法找到任何信息。
答案1
我读到,Ubuntu 中默认 VirtualHost 的基本 Apache 配置文件是将 DocumentRoot 目录中的 AllowOverride 指令设置为 None 而不是 All。这意味着 .htaccess 文件将不会被解析,因此您的 ErrorDocument 指令也不会被解析。
将其更改为AllowOverride All
应该可以激活使用 .htaccess 文件的能力,因此您的自定义 ErrorDocuments 应该可以工作。
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# Commented out for Ubuntu
#RedirectMatch ^/$ /apache2-default/
</Directory>
看启用 Apache htaccess 文件在 Ubuntu 的帮助 wiki 上或这个帖子在 UbuntuForums.org 上查看更详细的解释。希望对您有所帮助。或者,您可以在 Apache 配置文件中的 VirtualHost 记录中设置 ErrorDocument 指令,而不是 .htaccess 文件。