Ubuntu

在 AWS EC2 實例上不尊重 DirectoryIndex

  • January 30, 2014

嘿伙計們,我的 AWS EC2 實例遇到了一個非常奇怪的問題。我已經使用 PHP5.5 MariaDB 和 Apache2 設置了我的 LAMP 堆棧,我已經創建/啟用了我的 conf 文件(如下)

<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

我真的很茫然嗎?

它說:“作品:index.php”。

你清除瀏覽器記憶體了嗎?

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)

引用自:https://serverfault.com/questions/571106