有 index.html 个文件,但仍然得到一个目录列表

Have index.html file but still getting a directory listing

我的 Apache DocumentRoot 目录中有一个 index.html 文件,但是当我转到 URL 时,我仍然得到我的 DocumentRoot 目录的目录列表,而不是 index.html正在显示的文件。当我重新加载页面时,apache access_log 显示 200。有什么建议吗?

使用

DirectoryIndex index.html

它告诉 apache 为目录请求显示什么文档。

更新

您应该只指定 apache 将在请求的文件夹中查找的文件名

并不是说这会为您解决问题,但对我来说,当我第一次开始使用 Apache2 时,在 Web 根目录下移动或写入新文件时会忘记文件权限

ls -hal /var/www/host_one/index.html

如果上面没有相同 user:group 的读取 (r) 权限,或者如果所有权不包括 Web 服务器的 user/group,请尝试以下允许组阅读

# Modify ownership, change 'www_host' to Apache2 group
chown ${USER}:www_host /var/www/host_one/index.html
# give read+write (6) to user and read (4) to group owners
chmod 640 /var/www/host_one/index.html

尝试刷新网站,看看权限是否出问题。请注意,大多数 Web 文档只需要正确的读取权限和所有权,浏览器就可以选择它们进行渲染,在极少数情况下,您可能需要服务器脚本的可执行(1 或 x)权限(在这种情况下要谨慎所有权)如果没有充分的理由,您的网络根目录中的文件可能永远不会看到最后的写入权限(2 或 w)。

第二个尝试,使用浏览器中的 index.html URL 栏

# by IP
http://192.168.0.100/index.html
# by domain
http://site-name.local/index.html

如果以上加载了您的文档,那么就像@Pekka 웃 已经指出的那样,您可能有一个服务器选项丢失或启用了目录列表,而不是在该目录中查找索引页。如果这是问题所在,那么有两种方法可以 修复 我过去曾尝试过。一,htaccess 配置以禁用该子目录中的目录列表,二,服务器虚拟主机配置以防止整个站点的目录列表。我个人更喜欢使用选项二,然后在应该允许列出的目录上放置一个 htaccess 配置以获得权限而不是拒绝。