当目录为空时,apache2 自定义错误

当目录为空时,apache2 自定义错误

通常,当目录中没有 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> 

相关内容