0

有什么方法可以设置 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 之类的东西如此有用的原因),能够适应对于这种更改,无需费心处理虚拟主机设置,将会很有帮助。

考虑到这一点,是否可以设置上面的ServerNameServerAlias设置以支持通配符?这样就不必为可能解析到这台机器的每个可能的 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>

谢谢你。

4

1 回答 1

0

像这样的东西应该工作。

<VirtualHost *:80>
    DocumentRoot "/path/to/site"
    ServerAlias site.*.xip.io
    ServerName site.dev
</VirtualHost>
于 2014-07-12T01:58:11.617 回答