Apache-2.2

httpd - 虛擬主機去同一個網站

  • May 4, 2021

這是我的 /etc/httpd/conf.d/test.conf

NameVirtualHost *:80

<VirtualHost *:80>
   ServerName test.dev
   ServerAlias test.dev.*.xip.io
   DocumentRoot /var/www/html/user/test/web
   ErrorLog "/var/www/html/user/test/app/logs/httpd_error.log"
   CustomLog "/var/www/html/user/test/app/logs/httpd_access.log" combined
   <Directory "/var/www/html/user/test/web">
       # AllowOverride All      # Deprecated
       # Order Allow,Deny       # Deprecated
       # Options All
       # Allow from all         # Deprecated
       # Require all granted    # << New way of doing it
       Options +FollowSymlinks +Indexes
       AllowOverride all
   </Directory>
</VirtualHost>

訪問http://test.dev.192.168.1.4.xip.io/>成功將我重定向到正確的網站。訪問<http://192.168.1.4/>也會將我重定向到同一個網站,而不是我期望看到的索引。此外,訪問<http://test.dev-some-random-string.192.168.1.4.xip.io/也會將我重定向到同一個網站。

我該如何配置它,所以當我嘗試訪問test.dev.192.168.1.4.xip.io時,我最終會進入我正在編碼的頁面,而訪問192.168.1.4.xip.io將顯示首頁。

我目前正在使用在帶有網路橋接適配器的虛擬盒子中執行的 centos 6。這是我的 /etc/httpd/conf/httpd.conf。

http://pastebin.com/iFBin5Lu

如果您只定義一個虛擬主機,那麼對 httpd 的所有請求都將由該虛擬主機提供服務,無論它們是否匹配 ServerName 或 ServerAlias,因為第一個虛擬主機也是預設虛擬主機。在 Apache “基於名稱的虛擬主機支持”文件中搜尋“預設虛擬主機” 。

另請注意,一旦您定義了任何虛擬主機,預設的 ServerName 就會消失,如果您仍想使用它,您必須定義一個新的虛擬主機來重新創建它。請參閱上面連結中的插圖“主要主機消失”。

所以,試著定義一個預設的虛擬主機,它可以很簡單

&lt;VirtualHost *:80&gt;
   DocumentRoot /var/www/html
&lt;/VirtualHost&gt;

並確保它出現配置中的所有其他虛擬主機之前。然後,任何與其他虛擬主機不匹配的請求都將由該虛擬主機提供服務。

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