目前我有 2 个虚拟主机:
<VirtualHost *:80>
ServerName *.*.comp1.office1.lan
VirtualDocumentRoot /var/www/%-4/%-5/
UseCanonicalName Off
<Directory /var/www/>
Options Indexes FollowSymLinks -MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName *.comp1.office1.lan
VirtualDocumentRoot /var/www/%-4/
UseCanonicalName Off
<Directory /var/www/>
Options Indexes FollowSymLinks -MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
类似域名文件夹.站点.comp1.office1.lan解析正确(/var/www/site/folder/
)。但在请求站点.comp1.办公室1.lan我收到 404 错误。
并且 apache 记录了这一行:
[time...] [error] [client my.ip.there] File does not exist: /var/www/site/_
如果我改变 VirtualHosts 的加载顺序(第二个在第一个之前加载)站点.comp1.办公室1.lan效果很好,但 404 响应的问题文件夹.站点.comp1.office1.lan。
答案1
通常情况下,您不会在虚拟主机的 ServerName 条目中使用通配符,而是将其放在 ServerAlias 指令中。例如,尝试
ServerName comp1.office.lan
ServerAlias *.*.comp1.office.lan
...
您可能必须配置 ServerName 以使它们都不同,并且 vhost 名称与 ServerAlias 匹配。