在 AWS EC2 實例上不尊重 DirectoryIndex
嘿伙計們,我的 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)