我已将 apache 配置为监听端口 80 和 8080,并为站点创建了 2 个 conf 文件。
端口 80
<VirtualHost *:80>
DocumentRoot /local/Web
AddHandler cgi-script cgi
Alias /access /local/Web/
<Directory "/local/Web">
AllowOverride All
Options +ExecCGI
DirectoryIndex index.html
</Directory>
</VirtualHost>
访问 127.0.0.1 会从 /local/Web 加载正确的站点
端口 8080
<VirtualHost *:8080>
DocumentRoot /local/Sites
AddHandler cgi-script cgi
Alias /site1 /local/Sites/site1/
Alias /site2 /local/Sites/site2/
Alias /site3 /local/Sites/site3/
<Directory "/local/Sites">
AllowOverride All
Options +ExecCGI
DirectoryIndex index.html
</Directory>
</VirtualHost>
访问 127.0.0.1:8080 会出现“访问被拒绝”的情况,这没问题
访问 127.0.0.1:8080/site1 会从 /local/Sites/site1 加载正确的站点
访问 127.0.0.1:8080/site2 会从 /local/Sites/site2 加载正确的站点
访问 127.0.0.1:8080/site3 会从 /local/Sites/site3 加载正确的站点
我无法从端口 80 访问 site1、site2、site3,也无法从端口 8080 访问 /access - 这一切都符合预期。
我现在正尝试使用新的配置文件将新站点添加到端口 80。我希望它有自己的配置文件,如下所示:
<VirtualHost *:80>
DocumentRoot /local/Web
AddHandler cgi-script cgi
Alias /new /local/new
<Directory "/local/Web">
AllowOverride All
Options +ExecCGI
DirectoryIndex index.html
</Directory>
</VirtualHost>
但是当我尝试访问 127.0.0.1/new 时,我得到“未找到对象!”,并且 apache error_log 中没有显示任何内容
知道如何让 /new 在 80 端口上工作吗?
答案1
Apache 不知道 VirtualHost *:80 应该使用哪个配置。有两种方法可以解决此问题:
- 将这两个配置合并到一个虚拟主机中
- 使用 ServerName 和“主机名”URL 来确定应该使用哪个 VirtualHost。