2016-05-12 56 views
0

我想在我的电脑上托管多个网站。我在WAMP服务器上使用Windows。我已经有域名,并知道如何将它们映射到IP。 我已经编辑了httpd.conf文件来允许虚拟主机。使用WAMP服务器设置VirtualHost的问题

我的httpd的虚拟主机文件看起来像这样,

<VirtualHost *:80> 
    DocumentRoot "C:/wamp64/www" 
    ServerName localhost 
    ServerAlias localhost 
    <Directory "C:/wamp64/www"> 
     AllowOverride All 
     Require local 
    </Directory> 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "C:/wamp64/www/testcase" 
    ServerName test.mydomain.com 
    <Directory "C:/wamp64/www/testcase"> 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    Require all granted 
    </Directory> 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "C:/wamp64/www/test2" 
    ServerName test2.mydomain.com 
    <Directory "C:/wamp64/www/test2"> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
     Require all granted 
    </Directory> 
</VirtualHost> 

的问题是,我的两个域在这个虚拟主机标签仅打开第一个站点。 示例:在这种情况下,我的两个域都将打开WAMP服务器配置页面。如果我要将“testcase”标签移到另一个上面,我的域都会打开“testcase”页面。

更新: 当我在服务器上打开它们时,我的子域名成功显示相应的页面。但是当我在另一台机器上打开子域时,他们打开VH中的第一个条目。

更新2:好的,所以这只是我现在的理解。我想可能是WAMP不是我的一杯茶。所以我安装了XAMPP并对VH配置进行了更改,但仍然以相同的问题结束。于是我又摆脱了XAMPP,并安装了WAMPDeveloper Pro。软件为您设置所有配置文件时会出现什么问题,对吗?但令我惊讶的是,我仍然有同样的问题。当我在服务器上打开它们(使用真正的域名)时,这些网站可以正常工作,但是当我在网络外的机器上打开它们时,第一个VH条目将打开,以供我打开的所有域打开。

任何人都可以帮助我吗? 谢谢!

回答

0

同时使用Apache2.2和Apache2.4语法让Apache感到困惑。

所以我假设你正在运行的Apache 2.4改变VH DEFS这个

<VirtualHost *:80> 
    DocumentRoot "C:/wamp64/www/testcase" 
    ServerName test.mydomain.com 
    <Directory "C:/wamp64/www/testcase"> 
    Options Indexes FollowSymLinks 
    AllowOverride All 

    Require all granted 
    </Directory> 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "C:/wamp64/www/test2" 
    ServerName test2.mydomain.com 
    <Directory "C:/wamp64/www/test2"> 
     Options Indexes FollowSymLinks 
     AllowOverride All 

     Require all granted 
    </Directory> 
</VirtualHost> 

为什么阿帕奇打开第一个站点,即本地主机在这种情况下。

如果Apache无法识别VH def,它会忽略它,并默认加载在httpd-vhosts.conf文件中正确定义的第一个虚拟主机。

当然,你还需要修改你的c:\windows\system32\driverrs\etc\hosts文件,包括这些域名

127.0.0.1 localhost 
127.0.0.1 test.mydomain.com 
127.0.0.1 test2.mydomain.com 

::1 localhost 
::1 test.mydomain.com 
::1 test2.mydomain.com 
+0

RiggsFolly您好,感谢您的回答!我试图使用你发送的语法,但它仍然不起作用。这两个域都只显示最顶级的VirtualHost条目。是的,我使用Apache版本2.4。 –

+0

请参阅有关HOSTS文件要求的说明,我假设您已经有这些,但也许您没有。 – RiggsFolly

+0

是的,我的主机文件配置正确。但它仍然没有工作。你有什么其他的建议? –