Apache問題:子域轉到域,不必
我有一台安裝了經典 LAMP 的 Ubuntu 10.04 LTS 機器。我創建了兩個站點:
一個公共站點,位於 www.mysite.com
一個“私人”網站,目前在 private.mysite.com 上開放
我為他們創建了兩個不同的配置文件,
/etc/apache/sites-available/mysite
/etc/apache/sites-available/private-mysite
使用預設的 Apache 虛擬主機配置。沒有萬用字元,ServerName 分別是 www.mysite.com 和 private.mysite.com,我沒有使用萬用字元。
當然還有指向 /sites-enabled 的符號連結。每個站點都有自己的目錄,
/var/www/mysite
/var/www/private-mysite
公共站點是一個 WordPress 部落格。私人網站是一個包含多個 php 文件的 webapp。
一切都應該沒問題,我已經檢查了好幾次,但是發生了一些奇怪的事情。當我訪問 private.mysite.com 時,私人部分進展順利。
但是當我訪問 www.mysite.com 時,伺服器直接轉到 private.mysite.com。
Apache 日誌顯示這些對 www.mysite.com 的請求甚至沒有登錄
/var/www/mysite/logs/access.log(或error.log)
他們反而去
/var/www/private-mysite/logs/access.log
因此,每個請求都轉到子域。有什麼想法可以糾正這種行為嗎?
***************************** 更新 ******************** **************
更多資訊:
ls -l /etc/apache2/sites-available/
-rw-r--r-- 1 root root 859 2011-05-27 13:33 private-mysite -rw-r--r-- 1 root root 948 2010-11-18 22:16 default -rw-r--r-- 1 root root 7467 2010-11-18 22:16 default-ssl -rw-r--r-- 1 root root 264 2011-05-27 14:22 mysite
/etc/apache2/sites-available/private-mysite 內容:
<VirtualHost x.x.x.x:80> ServerName private.mysite.com DocumentRoot /var/www/private-mysite/html/ ErrorLog /var/www/private-mysite/logs/error.log CustomLog /var/www/private-mysite/logs/access.log combined </VirtualHost>
/etc/apache2/sites-available/mysite 內容:
<VirtualHost x.x.x.x:80> ServerName www.mysite.com ServerAlias mysite.com DocumentRoot /var/www/mysite/ ErrorLog /var/www/mysite/logs/error.log CustomLog /var/www/mysite/logs/access.log combined </VirtualHost>
VirtualHost
主機定義塊需要匹配NameVirtualHost
指令。它可能在 中/etc/apache2/ports.conf
,並且可能設置為*:80
。要解決,請更改您的
NameVirtualHost
:NameVirtualHost x.x.x.x:80
或更改您的
VirtualHost
定義:<VirtualHost *:80>
請自行發布配置文件和
ls -l /etc/apache/sites-available
. 重新啟動 Apache 時,您是否看到任何錯誤或警告?這可能是因為 www.mysite.com 由於某種原因不匹配,因此 Apache 使用 private.mysite.com 作為預設虛擬主機(因為它是唯一存在的)。