我想在我的计算机上托管多个网站。我正在使用带有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条目。
任何人都可以帮我这个吗? 谢谢!
答案 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