虚拟主机子域指向错误的目录

时间:2011-12-15 19:15:34

标签: apache virtualhost

我创建了2个虚拟主机http:// web1.com:2107指向“/ var / www / web1”文件夹,第二个http:// web2.com:2107指向“/ var / www / web2”。 web2中的所有子域都工作正常,但是对于web1.com:2107,我只能看到主页。当我尝试从web1打开任何子域名时,如http:// games.web1.com:2107,它指向web2的主页,即/ var / www / web2 / directory

配置有什么问题吗?

下面是我正在使用的主机的代码

<VirtualHost *:80>
ServerName  web2.com
ServerAdmin myeow@web2.com
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 myeow@web2.com
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>

4 个答案:

答案 0 :(得分:5)

当您有多个VirtualHost时,其中一个是默认的VirtualHost。 它是包含VirtualHost定义的文件的第一个字母顺序。

删除VirtualHost时。如果在Hosts文件或DNS记录中仍有条目,则在Apache服务器上执行查询时,如果找不到正确的VirtualHost(ServerName或ServerAlias),则会使用默认值来处理答案。 / p>

当您添加新的VirtualHost时,如果您在ServerName或ServerAlias中出错,您也将拥有默认的VH。

更新

既然问题已经完成,我可以看到你没有以正确的方式使用ServerAlias。您的所有子域都应该在ServerAlias指令中列出,而不是http:// 所以你应该:

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

你可以试试* .web1.com。 否则,当您使用未列出的名称时,将使用默认的vhost(此处定义vhost web2.com,因此它是此端口上的默认值)

答案 1 :(得分:0)

更改Apache Conf后,必须重新启动该服务。不确定这是不是问题,但检查确实没有伤害;)

答案 2 :(得分:0)

嗯我把问题解决了一半,在HOSTS文件中留下了一些条目,这样该页面仍然可以删除主机名输入。现在半个问题仍然存在。现在我创建了一个主机条目并指向差异位置,但仍指向旧位置:(

答案 3 :(得分:0)

对于Cloudflare用户,他们遇到了一些SSL问题和错误的目录:

将加密中的SSL模式从Flexible更改为Full

这帮助了我。