2011-12-15 83 views
3

虛擬主機的子域我創建2臺虛擬主機的http:// web1.com:2107指向「/無功/網絡/ web1的」文件夾和第二HTTP:// web2.com:2107指向「/無功/網絡/ web2" 的。在web2的所有子域工作正常,但在web1.com:2107的情況下,我只能看到主頁。當我嘗試從web1打開任何子域名像http:// games.web1.com:2107它指向web2的主頁即/ var/www/web2 /目錄指向錯誤的目錄

配置中是否有任何錯誤?

下面

是我使用

<VirtualHost *:80> 
ServerName web2.com 
ServerAdmin [email protected] 
ServerAlias http://www.web2.com 
DocumentRoot /var/www/web2 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
</Directory> 
<Directory /var/www/web2> 
    Options Indexes FollowSymLinks Multiviews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Directory> 

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
<Directory "/usr/lib/cgi-bin"> 
    AllowOverride All 
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
    Order allow,deny 
    Allow from all 
</Directory> 

ErrorLog /var/www/web2/error80.log 
CustomLog /var/www/web2/access80.log Combined 
</VirtualHost> 

<VirtualHost *:2107> 
ServerName web2.com  
ServerAdmin [email protected] 
ServerAlias http://www.web2.com 
DocumentRoot /var/www/web2 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
</Directory> 
<Directory /var/www/web2> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    allow from all 
</Directory> 

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
<Directory "/usr/lib/cgi-bin"> 
    AllowOverride All 
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
    Order allow,deny 
    Allow from all 
</Directory> 

    ErrorLog /var/www/web2/error.log 
CustomLog /var/www/web2/access80.log Combined 
LogLevel warn 

CustomLog /var/log/apache2/web2.com_access.log combined 

Alias /doc/ "/usr/share/doc/" 
<Directory "/usr/share/doc/"> 
    Options Indexes MultiViews FollowSymLinks 
    AllowOverride All 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.0/255.0.0.0 ::1/128 
</Directory> 

</VirtualHost> 

但主機上的代碼============================== =====================================

NameVirtualHost *:2107 
<VirtualHost *:2107> 
    ServerName web1.com 
    ServerAlias http://web1.com 
    DocumentRoot /var/www/web1 
    <Directory /var/www/web1/> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride All 
    </Directory> 
    ErrorLog  /var/www/web1/error.log 
    CustomLog  /var/www/web1/access.log Combined 
</VirtualHost> 
+0

我有同樣的,在我與殼體部「了NameVirtualHost *:80」是我沒有包含在主要的httpd.conf文件 - 所以虛擬主機完全未啓用,爲此所有指向默認的虛擬主機。 – jkulak 2013-04-18 21:15:33

回答

5

當您有多個VirtualHosts時,其中一個是默認的VirtualHost。 這是包含文件的第一個字母順序虛擬主機的定義

當你刪除一個VirtualHost時,如果Hosts文件或DNS記錄中仍然有條目,當你的Apache服務器執行查詢時,如果它找不到正確的VirtualHost(ServerName或ServerAlias),那麼默認的一個被認爲是處理問題的答案。

當您添加新的虛擬主機,如果你犯了一個錯誤的絲氨酸verName或ServerAlias,你也會有默認的VH。

更新

現在的問題是完整的,我可以不使用ServerAlias以正確的方式看到。你所有的子域應該在ServerAlias指令上市,沒有http:// 所以,你應該有:

ServerName web1.com 
ServerAlias www.web1.com 
ServerAlias games.web1.com 

也許你可以嘗試* .web1.com。 否則,當您使用未列出的名稱時,將使用默認的虛擬主機(並且此處vhost web2.com之前已定義,因此它是此端口上的默認虛擬主機)

0

更改Apache Conf後,你必須重新啓動服務。不知道如果是這樣的問題,但它絕不會傷害檢查;)

+0

葉,我忘了提,但我重新啓動該服務2-3次 – 2011-12-16 04:34:47

+0

哦,我看,對不起,我想不出更多的幫助,那麼,很高興你得到它雖然工作:P – SuperTron 2011-12-16 05:17:52

0

嗯,我得到了問題的一半,有入口留在hosts文件,頁面仍然可以用刪除的主機名條目。現在一半的問題仍然存在。現在我又創建了一個主機條目,並指向差異位置,但仍然指向舊位置:(

0

對於Cloudflare用戶來說,SSL和a錯誤的目錄:

將Crypto的SSL模式從Flexible更改爲Full

這幫助了我。