这是我的 vhosts.conf
<VirtualHost *:80>
DocumentRoot "C:/wamp/www"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/wamp/www/images"
ServerName images.localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/wamp/www/project"
ServerName project.localhost
</VirtualHost>
Listen 8080
<VirtualHost *:8080>
DocumentRoot "C:/wamp/www/trunk"
ServerName localhost
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:/wamp/www/images2"
ServerName images2.localhost
</VirtualHost>
这是我的 Windows 主机文件
127.0.0.1 project.localhost
127.0.0.1 images.localhost
127.0.0.1 images2.localhost
所以前三个都很好。端口 8080 上的 localhost 可以工作,我只需转到 localhost:8080,它就会加载 trunk 内的内容。
images2.localhost:8080 显示 C:/wamp/www/trunk 里面的内容,images2.localhost 只是转到 wampserver 主页。尝试更改为此,但仍然相同。
答案1
为了更清楚一点,这些条目中的第一个“拥有”:8080 端口,因此第二个条目被忽略。
<VirtualHost *:8080>
DocumentRoot "C:/wamp/www/trunk"
ServerName localhost
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:/wamp/www/images2"
ServerName images2.localhost
</VirtualHost>
你想要的是基于名称虚拟服务器,因此您可以使第一和第二个条目唯一。这就是 ServerName 指令真正发挥作用的原因。正如 @quanta 所述,将其添加NameVirtualHost *:8080
到配置中,然后 Apache 将注意您在浏览器中输入的 URL,并根据与 URL 匹配的 ServerName 指令提供页面。
答案2
插入NameVirtualHost *:8080
指令并重试。