使用WAMP服务器设置VirtualHost时出现问题

时间:2016-05-12 14:18:59

标签: apache dns virtualhost wampserver

我想在我的计算机上托管多个网站。我正在使用带有WAMP服务器的Windows。我已经有域名并知道如何将它们映射到ip。 我已经编辑了httpd.conf文件以允许虚拟主机。

我的httpd-vhosts文件看起来像这样,

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

问题是我的两个域只打开此VirtualHost标记中的第一个站点。 示例:在这种情况下,我的两个域都将打开WAMP服务器配置页面。如果我将“testcase”标记移到另一个上面,我的两个域都将打开“testcase”页面。

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

  

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

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

1 个答案:

答案 0 :(得分: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在这种情况下会打开第一个站点,即localhost。

如果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