DirectoryIndex 在 htaccess 中有效,但在 apache2 .conf 文件中无效

DirectoryIndex 在 htaccess 中有效,但在 apache2 .conf 文件中无效

我需要我的 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>

相关内容