无法在 apache2 [Debian 7.1] 中设置默认索引页

Posted

技术标签:

【中文标题】无法在 apache2 [Debian 7.1] 中设置默认索引页【英文标题】:Unable to set default index page in apache2 [Debian 7.1] 【发布时间】:2016-03-16 23:28:49 【问题描述】:

您好,我正在做一个项目,我在根目录上有两个索引文件,一个是 index.php,另一个是 index.html。我想将默认页面设置为 index.php,如果它不可用,那么它应该适用于 index.html。 我在互联网上搜索了很多,并找到了以下解决方案。

DirectoryIndex index.php index.html

我在我的网站上使用此代码:

<Directory "/home/zhengyu/webroot/engine5g/rentown.com/">
          DirectoryIndex index.php index.html default.htm
</Directory>

我也试过另一种方法:

<Directory "/home/zhengyu/webroot/engine5g/rentown.com/">
          DirectoryIndex index.php index.html
          Options Indexes FollowSymLinks MultiViews
          AllowOverride None
          DirectoryIndex index.php index.html
          Order allow,deny
          allow from all
</Directory>

但它们都不起作用,它总是将 index.php 设为默认值,但当它不可用时,它不会加载 index.html。

如果我先写 index.html,然后写 index.php,那么它会加载 index.html,但如果 index.html 不可用,则不会加载 index.php。

简而言之,我们可以说首选项不起作用。

【问题讨论】:

【参考方案1】:

您可以指定多个文件名,Web 服务器将搜索每个文件,直到找到匹配项。考虑这个示例指令:

将其写入根目录下的 htaccess 文件中:

DirectoryIndex index.php index.html

在此指令中,当访问者请求目录名称时,Web 服务器首先查找 index.php 文件。如果它没有找到 index.php 文件,它会查找 index.html 文件,依此类推,直到找到 找到匹配项或用完要搜索的文件。

或者试试这个方法

# Example A: Set index.html as an index page, then add index.php to that list as well.
<Directory "/foo">
    DirectoryIndex index.html
    DirectoryIndex index.php
</Directory>

# Example B: This is identical to example A, except it's done with a single directive.
<Directory "/foo">
    DirectoryIndex index.html index.php
</Directory>

# Example C: To replace the list, you must explicitly reset it first:
# In this example, only index.php will remain as an index resource.
<Directory "/foo">
    DirectoryIndex index.html
    DirectoryIndex disabled
    DirectoryIndex index.php
</Directory>

来源:

https://www.a2hosting.com/kb/developer-corner/apache-web-server/default-directory-index-page

https://httpd.apache.org/docs/2.4/mod/mod_dir.html

【讨论】:

@Insomania 我认为你的路径有问题 /home/zhengyu/webroot/engine5g/rentown.com/ ;尝试改变它。 好的,这里是.. Options -MultiViews RewriteEngine On # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # 处理前端控制器... RewriteCond %REQUEST_FILENAME !-d RewriteCond %REQUEST_FILENAME !-f RewriteRule ^ index.php [L] DirectoryIndex index.php index.html @Insomania 我的建议是尝试删除所有其他规则只是为了检查.. 只放置此规则并尝试运行它,如果它有效,然后尝试一个一个添加其他规则。 让我们continue this discussion in chat.

以上是关于无法在 apache2 [Debian 7.1] 中设置默认索引页的主要内容,如果未能解决你的问题,请参考以下文章

无法在debian上启动apache2

Apache2.4 - PHP 5.6 和 PHP7.1 同时运行

debian php无法使用bc函数 bcmath

Apache2.4 - PHP 5.6和PHP7.1同时运行

debian Linux下 apache2 出错,不能启动,求助各位大侠

apache2.4 + php-fpm + phpmyadmin 在 debian