Apache-2.2

本地伺服器 - Apache 將所有請求重定向到 /index.php

  • July 21, 2013

我的本地伺服器上有一個奇怪的重定向問題。我有一個 VirtualHost 設置:

NameVirtualHost *:80

<VirtualHost *:80>
   DocumentRoot "/Users/iMac/Sites/index.php"
   ServerName jordan.local
   ErrorLog "/private/var/log/apache2/jordan.local-error_log"
   CustomLog "/private/var/log/apache2/jordan.local-access_log" common  
   <Directory "/Users/iMac/Sites/index.php">
       AllowOverride All
       Order allow,deny
       Allow from all
   </Directory>
</VirtualHost>

訪問http://jordan.local工作正常。但是,當我嘗試訪問子目錄jordan.local/somefolder/index.php時,顯示的頁面是jordan.local/index.php. 我沒有 .htaccess 文件,並且多次重新啟動 apache。

Apache 版本:2.2.22 (Unix)

Mac OS X 10.7.5

如果有任何幫助,這是我的主機文件:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost
#74.208.10.249 gs.apple.com
127.0.0.1       jordan.local

我訪問的所有本地 URL(不存在)在我的自定義訪問日誌中顯示為 200 響應程式碼。

我的 Apache 錯誤日誌給出了這個警告:

Warning: DocumentRoot [/Users/iMac/Sites/index.php] does not exist

雖然/Users/iMac/Sites/index.php是一個有效的路徑。

如果您需要更多資訊,請告訴我。

請更改DocumentRoot為指向目錄,而不是文件。參考:http ://httpd.apache.org/docs/2.2/mod/core.html#documentroot

文件根

DirectiveDescription:形成從網路上可見的主文件樹的目錄

語法DocumentRoot directory-path

預設DocumentRoot /usr/local/apache/htdocs

上下文:伺服器配置,虛擬主機

狀態:核心

模組:核心

該指令設置httpd將提供文件的目錄。除非與類似的指令匹配,否則Alias伺服器會將請求的 URL 的路徑附加到文件根目錄以生成文件的路徑。

例子:

DocumentRoot /usr/web 

然後訪問http://www.my.host.com/index.html指的是/usr/web/index.html. 如果目錄路徑不是絕對的,則假定它是相對於ServerRoot.

DocumentRoot應該指定不帶斜杠。

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