Apache-2.2

域和 IP 應該有不同的 DocumentRoot

  • February 15, 2014

域指向一個 IP / 伺服器。但是如果伺服器是通過 IP 或域訪問的,我喜歡有不同的 documentRoots。因此我建構了這個配置:

NameVirtualHost *:80

<VirtualHost *:80>
 ServerAdmin foo@bar

 DocumentRoot /var/www/localhost
 <Directory /var/www/localhost>
   Options -Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   allow from all
 </Directory> 
</VirtualHost>

<VirtualHost *:80>
 ServerAdmin foo@bar
 ServerName example.org
 ServerAlias example.org

 DocumentRoot /var/www/example.org
 <Directory /var/www/example.org>
   Options -Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   allow from all
 </Directory>

</VirtualHost>

問題是訪問IP或域會導致相同的頁面。我做錯什麼了?

您的配置有一個伺服器名稱為 example.com 的虛擬主機,但是另一個虛擬主機沒有 servername 指令

假設你的 ip 是 10.0.0.1

您需要為要響應該 ip 的虛擬主機提供 10.0.0.1 的伺服器名稱。

像這樣的東西:

<VirtualHost *:80>
 ServerAdmin foo@bar

 ServerName 10.0.0.1

 DocumentRoot /var/www/localhost
 <Directory /var/www/localhost>
   Options -Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   allow from all
 </Directory> 
</VirtualHost>

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