通常,当目录中没有 index.html 文件时,apache 只会显示一个页面,顶部显示“/subdir 的索引”,并列出所有文件。如何才能显示自定义错误页面来代替这个页面?最好是可以放在 .htaccess 文件中的东西
答案1
默认情况下,你的 apache 配置中会有如下配置行:
DirectoryIndex index.html index.php index.cgi
这定义了在请求目录时,以何种顺序搜索这些文件以显示目录内容(当请求的目录没有任何文件部分时)。如果未找到,并且启用了自动索引功能,您将获得列出的目录内容。
但是,也可以定义一个绝对路径DirectoryIndex
,例如:
DirectoryIndex index.html /default/index.html
现在,如果目录中没有 index.html,则将使用 /default/index.html(相对于 DocumentRoot)的内容,我相信这正是您所要求的。
答案2
首先:我最讨厌的事情,引自.htaccess 手册文件:
你应该完全避免使用 .htaccess 文件如果您有权访问 httpd 主服务器配置文件。使用 .htaccess 文件会降低 Apache http 服务器的速度。最好将 .htaccess 文件中包含的任何指令设置在目录块中,因为它将具有相同的效果且性能更好。
您可以禁用 自动索引生成通过设置:
<Directory /var/www>
Options -Indexes
</Directory>
此后,访问空目录或没有 IndexDocument 的目录将产生一般错误403 禁止,而不是目录列表。
然后,您可以通过设置ErrorDocument
<Directory /var/www>
Options -Indexes
ErrorDocument 403 /errors/403.html
</Directory>