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

www*_*.me 3 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 /目录

配置有什么问题吗?

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

<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>
Run Code Online (Sandbox Code Playgroud)

================================================== =================

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>
Run Code Online (Sandbox Code Playgroud)

reg*_*ero 5

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

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

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

更新

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

ServerName web1.com
ServerAlias www.web1.com
ServerAlias games.web1.com
Run Code Online (Sandbox Code Playgroud)

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