有什么方法可以设置 Apache 虚拟主机以通过通配符匹配部分域?
例如,我们使用 xip.io 为我们的开发环境中的一些虚拟主机提供动力,我们的标准开发域看起来像domain.com.127.0.0.1.xip.io
,这意味着我们可以使用看起来像这样的虚拟主机:
<VirtualHost *:80>
DocumentRoot "/srv/www/domain.com/public_html"
ServerName domain.com.127.0.0.1.xip.io
ServerAlias www.domain.com.127.0.0.1.xip.io
<Directory "/srv/www/domain.com/public_html">
Options +Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog "/srv/www/domain.com/log/error.log"
CustomLog "/srv/www/domain.com/log/access.log" common
LogLevel error
</VirtualHost>
这很好,直到必须更改 IP 地址。IP 必须更改的原因可能有很多(例如让其他人查看您的工作等),并且在这个动态 IP 的世界中(这就是 xip.io 之类的东西如此有用的原因),能够适应对于这种更改,无需费心处理虚拟主机设置,将会很有帮助。
考虑到这一点,是否可以设置上面的ServerName
和ServerAlias
设置以支持通配符?这样就不必为可能解析到这台机器的每个可能的 IP 地址设置一个别名,而是看起来像这样?
<VirtualHost *:80>
DocumentRoot "/srv/www/domain.com/public_html"
ServerName domain.com.*.xip.io
ServerAlias www.domain.com.*.xip.io
<Directory "/srv/www/domain.com/public_html">
Options +Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog "/srv/www/domain.com/log/error.log"
CustomLog "/srv/www/domain.com/log/access.log" common
LogLevel error
</VirtualHost>
谢谢你。