假设我有一个简单的目录结构,如下所示:
/var/www/html
- index.html
- 404.html
一个简单的配置如下:
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName example.com
ErrorDocument 404 /404.html
</VirtualHost>
如何防止直接访问 404.html,即当有人尝试http://example.com/404.html
直接访问时,返回 404 NOT FOUND 状态代码,以及 404.html 的内容?
现在,如果我直接访问 URL,它将返回 200 OK。如果我尝试通过以下方式修改状态代码mod_rewrite
:
<Location /404.html>
RewriteEngine On
RewriteRule .* - [R=404,L]
</Location>
那么实际的 404(例如http://example.com/not-exist.html
)将返回以下错误:
该服务器上未找到所请求的 URL /not-exist.html。
此外,尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。
那么,我怎样才能向访问者隐藏 404.html,但仍将其用作自定义 404 错误页面?