我有一个奇怪的情况,我想要 URL app1.example.com
、example.com
和 *.example.com
全部使用不同的虚拟主机。这就是我所拥有的(不包括 example.com
因为它只会让事情变得更困惑)。
<VirtualHost *>
ServerName app1.example.com
ServerAlias app1.example.com
DocumentRoot = /var/www/app1
# Other configuration for this app here
</VirtualHost>
<VirtualHost *>
ServerName wildcard.example.com
ServerAlias *.example.com
DocumentRoot = /var/www/wildcard
# other configuration for this app here
</VirtualHost>
问题是它们之间存在冲突。最先列出的一方获胜。如何同时托管通配符虚拟主机和特定虚拟主机?
注意:我不只是更改配置中的 DocumentRoot
,因此使用 mod_rewrite
更改 DocumentRoot 变量并不能解决问题。
最佳答案
<VirtualHost *:80>
DocumentRoot /var/www/app1
ServerName app1.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/example
ServerName example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/wildcard
ServerName other.example.com
ServerAlias *.example.com
</VirtualHost>
应该可以。如果您没有获得显式匹配,第一个条目将成为默认条目。因此,如果您让 app.otherexample.com 指向它,它将被捕获为 app1.example.com。
关于apache - 通配符子域和静态子域的虚拟主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/758351/