我正在尝试为我的计算机配置 apache 虚拟主机。但我在这样做时遇到了问题。
我已经在 C:\WINDOWS\system32\drivers\etc\hosts 中进行了必要的更改,然后在 C:\xampp\apache\conf\extra\httpd-vhosts.conf 中进行了必要的更改,我在 httpd-vhosts.conf 中添加了以下几行
########################Virtual Hosts Config below##################
NameVirtualHost 127.0.0.1
<VirtualHost localhost>
ServerName localhost
DocumentRoot "C:\xampp\htdocs"
DirectoryIndex index.php index.html
<Directory "C:\xampp\htdocs">
AllowOverride All
</Directory>
</VirtualHost>
<VirtualHost virtual.cloudse7en.com>
ServerName virtual.cloudse7en.com
DocumentRoot "C:\development\virtual.cloudse7en.com\httpdocs"
DirectoryIndex index.php index.html
<Directory "C:\development\virtual.cloudse7en.com\httpdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost virtual.app.cloudse7en.com>
ServerName virtual.app.cloudse7en.com
DocumentRoot "C:\development\virtual.app.cloudse7en.com\httpdocs"
DirectoryIndex index.php index.html
<Directory "C:\development\virtual.app.cloudse7en.com\httpdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
########################################################################
我启动了我的 xampp 并尝试http://本地主机在浏览器中。此操作有效,并打开http://localhost/xampp/
但是当我尝试 http:http://virtual.app.cloudse7en.com它再次打开http://virtual.app.cloudse7en.com/xampp/
我不明白原因。另外,我有一个 Windows Vista 64 位操作系统。我是否还需要进行其他更改?
问候 Zee
答案1
在任何情况下,后面的部分都<VirtualHost
必须与后面的部分相匹配NameVirtualHost
。(此功能使得在一台机器上的多个 IP 地址上拥有多个域成为可能。)对于您的情况:
<VirtualHost 127.0.0.1>
答案2
扩展 Jason 的回答,Apache 使用来自客户端的 HTTP 标头,该标头必须与给定配置块内的 ServerName 变量匹配;配置块必须与相同的 IP 接口匹配。编写您正在做的事情的最典型方式是这样的:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName default.server.com
...
</VirtualHost>
<VirtualHost *:80>
ServerName virtual-1.server.com
...
</VirtualHost>
<VirtualHost *:80>
ServerName virtual-2.server.com
...
</VirtualHost>
如果您想要专门使用 127.0.0.1,那也没问题,同样有效。但是,有一种更有趣的方法可以做到这一点,它不涉及使用主机文件 - 不同的端口。它可能看起来像:
Listen 80
Listen 81
Listen 82
NameVirtualHost *:80
NameVirtualHost *:81
NameVirtualHost *:82
<VirtualHost *:80>
ServerName default.server.com
...
</VirtualHost>
<VirtualHost *:81>
ServerName virtual-1.server.com
...
</VirtualHost>
<VirtualHost *:82>
ServerName virtual-2.server.com
...
</VirtualHost>
然后您需要做的就是使用不同的端口进行网页浏览:
http://localhost:80/
http://localhost:81/
http://localhost:82/
...每一个都会带你到那个配置块。
答案3
登记ServerRoot
入住httpd.cnf
。