Dav*_*ave 70 apache subdomain wildcard-subdomain virtualhost
我有一个奇怪的情况下,我想有网址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>
Run Code Online (Sandbox Code Playgroud)
问题是他们发生冲突.无论哪一个列出首先胜出.如何托管通配符虚拟主机和特定主机?
注意:我不只是更改DocumentRoot
配置,因此使用mod_rewrite
更改DocumentRoot变量不会修复它.
Tim*_*Tim 153
<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>
Run Code Online (Sandbox Code Playgroud)
应该管用.如果没有明确匹配,第一个条目将成为默认条目.因此,如果你有app.otherexample.com指向它,它将被捕获为app1.example.com.
Chr*_*haw 13
通配符只能在ServerAlias中使用,而不能在ServerName中使用.让我难过的东西.
对于您的用例,以下内容应该足够了
<VirtualHost *:80>
ServerAlias *.example.com
VirtualDocumentRoot /var/www/%1/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
还有更多信息,请访问https://www.chris-shaw.com/blog/using-wildcards-in-virtual-hosts-on-apache