Apache-2.2
Httpd/Apache2 虛擬主機和主機名衝突
我有一個域,即 test.example.com。
我通過uisng將我的伺服器的主機名設置為此:
hostname test.example.com
然後我在 /etc/httpd/conf/httpd.conf 中添加一個虛擬主機
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/ </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/mydir ServerName test.example.com ServerAlias www.test.example.com </VirtualHost>
然後我重新啟動 Httpd 服務。如果我嘗試訪問 test.example.com,我會在 /var/www/html 中獲得 index.php 而不是指定的文件夾。如果我將主機名更改為除此之外的其他名稱,然後重新啟動 httpd,虛擬主機將按預期工作,因此我只能假設當主機名有傳入連接時,apache 會刪除 url。
列印時在php中
$_SERVER['REQUEST_URI'] $_SERVER['REDIRECT_URL']
我得到/。誰能告訴我如何克服這個問題,或者我應該將主機名設置為其他內容嗎?我有一個使用主機名作為目錄名的備份腳本,因此我可以很好地組織備份,這是我首先更改主機名的主要原因。
在你的情況下,我會替換
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/ </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/mydir ServerName test.example.com ServerAlias www.test.example.com </VirtualHost>
經過
<VirtualHost *:80> DocumentRoot /var/www/html/mydir ServerName test.example.com ServerAlias www.test.example.com </VirtualHost> # /!\ THIS HAS TO BE ON THE LAST POSITION /!\ <VirtualHost *:80 *:443> ServerName localhost ServerAlias * DocumentRoot /var/www/html/ </VirtualHost>
像 test.example.com 和 www.test.example.com 以外的所有請求都將傳遞 /var/www/html/
更多資訊:
NameVirtualHost
在您的情況下沒有用,並且已在 Apache 2.4 https://httpd.apache.org/docs/2.4/en/upgrading.html中刪除