虚拟主机未获取索引文件

虚拟主机未获取索引文件

在 Fedora 上运行 apache。

我的虚拟主机配置如下:

NameVirtualHost 184.106.108.173:80

<VirtualHost 184.106.108.173:80>
  ServerName www.sandboxmadness.com
  DocumentRoot /var/www/admin/public
    <Directory "/var/www/admin/public">
      Options Indexes FollowSymLinks
      AllowOverride All   
      Order allow,deny
      Allow from all
  </Directory>
</VirtualHost>
<VirtualHost 184.106.108.173:80>
  ServerAlias www.meatball-parm.us
  DocumentRoot /var/www/meatball
  ServerName www.meatball-parm.us
  DirectoryIndex index.html
</VirtualHost>

第一个 vhost 运行良好。当我解析 meatball 地址时,浏览器打开了正确的文件夹,但显示了目录列表,而不是打开索引文件。

答案1

找到了。。。conf 文件中隐藏着另一个 DirectoryIndex 指令,该指令被设置为 index.php。显然,虚拟主机中指定的指令不会覆盖“主配置”中指定的指令。

答案2

您能检查一下日志吗?您可能会看到错误(文件无法打开、目录无法读取……)。如果您输入以 index.html 结尾的 URL,它能正常工作吗?您的索引不是 PHP 还是其他什么?

答案3

就我而言,mod_dir.so 文件被注释掉了:

加载模块...mod_dir.so

取消注释,重新启动 apache,一切开始正常工作!

答案4

今天,我们发现装有 Apache 2.2 的 SLES 11 SP4 服务器上出现了非常奇怪的行为。

当 htdocs 文件不属于 Apaches 服务帐户(本例中为 wwwrun.www)时,Apache 完全“忽略”了我们 vhosts.conf 中的 DirectoryIndex index.html,尽管通过 OTHERS(R+X)文件权限足够。如果我们在 URL 上明确指出 index.html,我们就可以毫无问题地访问它,但如果 URL 上没有提到它,我们就会失败。

但是当我们递归地将 htdocs 所有权改回 SLES 默认值 (wwwrun.www) 时,apache 开始正常工作,并且 DirectoryIndex 给定的文件再次被提供,而无需在 URL 上明确提及它。

相关内容