
我使用 Debian 7,並按照本教學安裝了地址為 sub.domain.com 的虛擬主機:http://www.debian-administration.org/articles/412
我已啟用它,重新啟動電腦,但子網域仍然打開 /var/www
以下是名為「sub.domain.com」的檔案的內容,該檔案位於 /etc/apache2/sites-available/ :
<VirtualHost *>
ServerName sub.domain.com
DocumentRoot /usr/share/destfolder
ServerAdmin [email protected]
ErrorLog /var/log/apache2/sub.domain.com-error_log
CustomLog /var/log/apache2/sub.domain.com-access_log common
</VirtualHost>
順便說一句,當我重新載入 apache 的配置時,我得到:
NameVirtualHost *:80 has no VirtualHosts
有什麼建議麼?
答案1
僅連結教程不足以提供足夠的信息,最好發布您的配置文件。/var/www
開啟虛擬主機位址時最終遇到的情況可能有更多原因。
Apache 設定檔的建構方式是在沒有上下文的情況下,指令全域應用。否則它們僅適用於上下文。虛擬default
主機*
按照預設設定的方式完成。如果沒有這樣的虛擬主機,則解析配置時遇到的第一個虛擬主機將被視為預設主機。
現在,最後,給出可能的答案:
1)在您的虛擬主機中,您尚未設定 DocumentRoot 指令,並且(可能是預設的)全域 DocumentRoot 指向/var/www
.
2) 您的虛擬主機沒有按照您期望的方式運作。當您命名錯誤時,有時會發生這種情況。啟用LogLevel debug
偵錯日誌記錄並觀察當您開啟所需位址時會發生什麼以及呼叫哪個虛擬主機。 Debian 上的日誌檔案位於(不是 100% 確定)/var/log/apache2/
。
發布您的個人資料和偵錯訊息,可以大大增加獲得有用建議的機會。
更新:
看來您已經開啟了基於名稱的虛擬主機。基本上你的配置看起來很合理。在該<VirtualHost ...>
子句中,您應該指定目標連接埠<VirtualHost *:443>
等。
指令DocumentRoot
和ServerName
都在這裡,就可以了。當您請求該頁面時,您的虛擬主機可能不會被呼叫。
這可能是因為 Apache 不知道該 IP 指向什麼sub.domain.com
。你有sub.domian.com
DNS 或至少在主機檔案嗎?
有關基於名稱的虛擬主機的詳細資訊:http://httpd.apache.org/docs/2.2/vhosts/name-based.html