我需要我的 Ubuntu 安装使用 index.php 作为默认文件。
添加
DirectoryIndex index.php
到 /etc/apache2/apache2.conf
添加
<Directory /path/to/website/root/>
DirectoryIndex index.php
</Directory>
到 /etc/apache2/sites-available/mysite.conf 然后启用并重新启动
sudo a2ensite mysite
sudo service apache2 restart
我错过了什么?服务器仍然不会加载默认文件。
注意:添加DirectoryIndex index.php
到 .htaccess 会产生预期的效果,但我更愿意通过 .conf 文件来执行此操作。
答案1
您将 DirectoryIndex 放在哪里了?将其添加到 .htaccess 相当于将语句放入:
<Directory /path/to/htaccess/file/>
DirectoryIndex index.php
</Directory>
因此,请尝试在 DirectoryIndex 周围添加目录语句。有点不靠谱,但应该可以行得通。如果不行,请尝试向我们提供更多配置信息,例如整个 vhost 配置。
答案2
今天我们在 SLES 11 SP4 上遇到了类似的问题,Apache 2.2 的配置基本是默认的 Apache 配置。问题是,当 URL 上没有明确调用时,Apache 会忽略现有的 index.html 文件。例如 server.domain.tld/dir/
但是,如果使用显式文件调用,它将提供内容。例如 server.domain.tld/dir/index.hmtl 。因此文件系统权限没有问题。htdocs 下的所有文件都具有 Group OTHERS 的足够权限。但当时所有 htdocs 文件都归 root.root 所有。因此,在这种“模式”下,如果 URL 中未提及 index.html,Apache 不会提供该服务。
当我们递归地将 htdocs 目录和文件改回所有者“wwwrun.www”(SLES(suse linux enterprise Server)上的“默认”)而不更改权限本身时,apache 开始再次提供 index.html,正如通常预期的那样。无需重新启动,也无需执行任何操作。
无法判断这是一个错误还是一个功能。只是想让你知道我们遇到了什么以及如何解决问题。
因此,您可以检查您对 htdocs 文件的所有权,并确保它归 Web 服务器服务帐户和组所有。
答案3
尝试使用位置指令。
<Location /path/to/htaccess/file/>
DirectoryIndex index.php
</Location>