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

标签 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>

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

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>

最佳答案

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

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

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

更新

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

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

您也许可以尝试 *.web1.com。 否则,当您使用未列出的名称时,将使用默认虚拟主机(此处虚拟主机 web2.com 是之前定义的,因此它是此端口上的默认虚拟主机)

关于apache - 虚拟主机子域指向错误的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8525377/

相关文章:

apache - Ubuntu 12.10 禁止 - 您无权访问/在此服务器上

php - ubuntu 上使用 xampp 的虚拟主机配置错误

java - 在 OpenCMS 网站上更改域名

php - 谁了解 AppWeb HTTP 服务器及其嵌入式 PHP?

angularjs - 如果我的 Apache 服务器不允许代理,如何利用 prerender.io 服务

ssl - 虚拟主机重定向不存在的子域

apache - 虚拟主机不能在 zend 框架中工作

显示 Apache "It works"页面,而不是虚拟主机中定义的站点

php - 带有 mysql 数据库安装程序的 Web 应用程序

apache - htaccess 在一个重写规则中设置多个 cookie