AWS EC2 实例不尊重 DirectoryIndex

AWS EC2 实例不尊重 DirectoryIndex

大家好,我的 AWS EC2 实例出现了一个非常奇怪的问题。我已经使用 PHP5.5 MariaDB 和 Apache2 设置了我的 LAMP 堆栈,并创建/启用了我的配置文件(如下)

<VirtualHost *:80>

    ServerName localhost
    DocumentRoot /var/www

    SetEnv  APPLICATION_ENV live

    <Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews

        DirectoryIndex index.html index.php

        Order allow,deny
        AllowOverride All
        Allow from All
    </Directory>

    <IfModule mod_rewrite>
        RewriteEngine On
    </IfModule>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

甚至尝试在我的 webroot 中删除带有 DirectoryIndex 的 htaccess。但这些似乎都没有尊重我的 DirectoryIndex?有什么想法吗?mod_dir 和 mod_rewrite 都已启用,您认为 Apache 能否通过这两者解决问题??

你可以使用http://54.200.197.102/它来检查一下,安全组设置为允许 80,你可以在这里看到我的 var dub 的目录结构

-rw-r--r--  1 ubuntu ubuntu   4566 Jan 30 18:58 backup
-rw-rw-r--  1 ubuntu ubuntu     50 Jan 30 19:10 .htaccess
-rw-rw-r--  1 ubuntu ubuntu     12 Jan 30 19:09 index.html
-rw-rw-r--  1 ubuntu ubuntu      4 Jan 30 18:51 index.php

htaccess 的内容如下

DirectoryIndex index.php index.html

我现在真的是不知所措吗?

答案1

它显示:“作品:index.php”。

您清除了浏览器缓存吗?

答案2

Apache 将通过 DirectoryIndex 配置变量进行解析,直到找到匹配项,它会在您浏览的目录中找到第一个匹配项时停止处理(在您的情况下为文档根目录:/ var / www)

在您的配置中,您指定了 index.html index.php 的顺序,这意味着只要它在目录中看到 index.html,它就会为其提供服务,如果没有,它就会寻找 index.php,如果找到它,就会为其提供服务

如果找不到任何一个文档,那么它将默认为目录的目录索引权限或最接近的匹配项(在您的情况下为允许),因此它将显示目录内容

您已经覆盖了 .htaccess 中的 VHOST DirectoryIndex 配置(这并不罕见),以便它会搜索 index.php 然后搜索 index.html - 这是您当前看到的行为,因为 index.php 是第一个匹配项(即使两个文件都存在)

基本上选择您喜欢的文件并将其重命名为其他名称或删除它和/或重新配置您的 VHOST/.htaccess 文件,以便指定您喜欢的确切文件(猜测 index.php)

相关内容