![获取根目录本身时,Apache 2.0 ErrorDocument 指令不起作用](https://linux22.com/image/624582/%E8%8E%B7%E5%8F%96%E6%A0%B9%E7%9B%AE%E5%BD%95%E6%9C%AC%E8%BA%AB%E6%97%B6%EF%BC%8CApache%202.0%20ErrorDocument%20%E6%8C%87%E4%BB%A4%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我负责一个使用 Red Hat 4.1.2 上的 Apache 2.0 的站点。
我已通过将以下行添加到网站根目录中的 .htaccess 文件来将网站配置为显示自定义错误页面:
ErrorDocument 403 /403.html
为了测试,我在网站应用程序中阻止了我自己的 IP 地址;这会导致 .htaccess 文件中出现类似这样的内容(为了简洁,我编辑了列表并修改了 IP):
SetEnvIfNoCase REMOTE_ADDR "^(0\.0\.0\.1|0\.0\.0\.2|0\.0\.0\.3).*" BadIP
deny from env=BadIP
当我尝试从“坏”IP 访问网站时,如果我尝试获取特定页面(例如,http://example.com/index.html)。
但是,如果我尝试仅获取根目录(例如http://example.com),那么我得到的是 Apache 测试页面。
有什么方法可以让站点的根目录与自定义错误页面配合使用?
编辑:我想我可能造成了一些混乱。澄清一下:
- 当我尝试获取根 URL 时,根页面是不是服务;我得到的页面显示:“如果您可以阅读此页面,则意味着安装在该站点的 Apache HTTP 服务器正常运行。” 因此,我按预期被阻止了,但我只是没有收到 403 错误页面。
- 当我尝试获取根目录下的任何内容时,我得到了自定义的 403.html 页面
更新:
我在较新的 Apache 版本 (2.2.25) 上尝试过此操作。我也尝试过没有ErrorDocument 指令或 SetEnv 内容。.htaccess 文件包含仅有的这三行:
order allow,deny
allow from all
deny from 0.0.0.0
其中 0.0.0.0 被我的实际 IP 地址替换。
结果是一样的:当获取 example.com 时,我得到了 Apache 的“如果您可以读取此内容”测试页面,而当获取 example.com/x 时,我得到了内置的“禁止...您无权访问此服务器上的 /x”页面。