我在Windows机器上有一个本地PHP服务器,而我遇到的麻烦是在主根127.0.0.1/localhost中我希望有几个我可以调用的文件夹/站点。
目前我可以做localhost / siteA或localhost / siteB没有问题,但我想做的是分配这些位置测试域名:
EG:localhost / siteA是sitea.dev,localhost / siteB是siteb.dev
没问题,因为我在主机文件和vhost配置文件上设置了一个。
mysites.dev链接到root / localhost。所以我可以像上面那样使用它
mysites.dev/siteA和mysites.dev/siteB
但是,如上所述,我想给每个站点提供自己的vhost名称。所以我添加了以下内容:
主机文件
127.0.0.1 mysites.dev
127.0.0.1 sitea.dev
vhost文件
<VirtualHost *:80>
DocumentRoot "C:\Websites\"
ServerName mysites.dev
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:\Websites\sitea\"
ServerName sitea.dev
</VirtualHost>
麻烦的是,无论我调用它们的所有人似乎都只是加载第一个,或者至少它看起来像那样,但是如果没有vhost细节它们仍然会转到root,所以看起来主机文件正在指向它们到127.0.0.1并且它的vhost文件似乎被忽略了。
那么我为了连接个别本地网站而错过了什么?
已解决:看到我的答案会在几天内将其标记为正确答案。
答案 0 :(得分:0)
你的vhosts都试图抓住端口80上的任何内容:<VirtualHost *:80>
。
您需要指定vhost名称以指向特定文件夹:
<VirtualHost sitea.dev:80>
DocumentRoot "C:\Websites\sitea\"
ServerName sitea.dev
</VirtualHost>
<VirtualHost siteb.dev:80>
DocumentRoot "C:\Websites\siteb\"
ServerName sitea.dev
</VirtualHost>
您可以在Apache文档中找到更多相关信息:http://httpd.apache.org/docs/2.2/vhosts/examples.html
答案 1 :(得分:0)
我确实感到愚蠢。经过长时间的观察,我注意到在配置文件中它没有调用vhost文件,因为我将它们放在主httpd.conf中并且它有效。
所以我必须在httpd.conf文件中取消注释以下内容:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf