Apache-2.2

Apache vhosts - 如何以一種方式路由多個站點,但以不同方式路由開發站點?

  • March 23, 2013
127.0.0.1 developmentsite.com
127.0.0.1 blockeddomain1.com
127.0.0.1 blockeddomain2.com

我想阻止最後 2 個域(以及其他一些域)。為此,我添加了以下虛擬主機條目:

<VirtualHost *:80>
   DocumentRoot "/sites/blocked"
   <Directory /sites/blocked>
       Options Indexes FollowSymLinks Multiviews
       AllowOverride All
       Order allow,deny
       allow from all
   </Directory>
</VirtualHost>

這很好用。但現在我希望將第一個域路由到我正在服務的站點(執行 XAMPP)。這適用於將所有域路由到我的開發站點:

<VirtualHost *:80>
   DocumentRoot "/sites/developmentsite.com"
   ServerName developmentsite.com
   ServerAlias developmentsite.com
   <Directory /sites/developmentsite.com>
       Options Indexes FollowSymLinks Multiviews
       AllowOverride All
       Order allow,deny
       allow from all
   </Directory>
   ErrorLog "/sites/logs/developmentsite.com/error_log"
   CustomLog "/sites/logs/developmentsite.com/access_log" common
</VirtualHost>

但我只想將 developmentsite.com 發送那裡。我嘗試了不同的埠和ips,但我想我只是不了解一些基本的東西。

很抱歉問了這麼一個基本的問題。謝謝!

我認為由於 Apache 的預設行為,您的“阻塞” VirtualHost 只能按您希望的方式工作;如果它找不到與請求匹配的ServerName/的 VirtualHost ServerAlias,它將使用預設的 VirtualHost(如果沒有明確選擇,它是它解析的第一個)。

您應該將要明確阻止的站點放入“阻止”虛擬主機中,如下所示:

<VirtualHost *:80>
   # Add these lines so Apache knows explicitly what to route here:
   ServerName blocking.localhost
   ServerAlias blockeddomain1.com *.blockeddomain1.com
   ServerAlias blockeddomain2.com *.blockeddomain2.com

   # Everything else
   DocumentRoot "/sites/blocked"
   <Directory /sites/blocked>
       Options Indexes FollowSymLinks Multiviews
       AllowOverride All
       Order allow,deny
       allow from all
   </Directory>
</VirtualHost>

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