Apache-2.2

Apache問題:子域轉到域,不必

  • May 27, 2011

我有一台安裝了經典 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 作為預設虛擬主機(因為它是唯一存在的)。

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