Apache:将 VirtualHost 动态域和子域指向不同的文件夹

Apache:将 VirtualHost 动态域和子域指向不同的文件夹

目前我有 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 匹配。

相关内容