带有通配符/非通配符子域混合的 Apache Config

Posted

技术标签:

【中文标题】带有通配符/非通配符子域混合的 Apache Config【英文标题】:Apache Config with Wildcard/Non-Wildcard Subdomain Mix 【发布时间】:2011-02-27 11:31:07 【问题描述】:

我有域,我们将其命名为“mydomain.com”,我希望设置以下虚拟主机以通过以下方式解析:

mydomain.com / www.mydomain.com 指向 /var/www/ dev.mydomain.com 指向 /var/www/dev/ *.mydomain.com(所有其他子域)指向/var/www/old

我的apache配置目前设置为:

NameVirtualHost 1.2.3.4:80

<VirtualHost 1.2.3.4:80>
 ServerAlias *.mydomain.com
 DocumentRoot /var/www/old
</VirtualHost>

<VirtualHost 1.2.3.4:80>
 ServerName mydomain.com
 ServerAlias www.mydomain.com
 DocumentRoot /var/www
</VirtualHost>

<VirtualHost 1.2.3.4:80>
 ServerAlias dev.mydomain.com
 DocumentRoot /var/www/dev
</VirtualHost>

不幸的是,这并没有像我预期的那样工作。使用此配置,只有第一个(通配符)VirtualHost 条目可以正常工作。

配置 Apache 以执行此操作的正确方法是什么?

【问题讨论】:

【参考方案1】:

将通配符条目放在文件的最后。 Apache 将使用与浏览器发送的 Host 标头匹配的第一个 VirtualHost。

【讨论】:

是否可以为上述每个虚拟主机编写单独的配置文件,还是必须在同一个文件中以允许优先顺序? @activatedGeek 如果它们位于不同的文件中,则优先级基于文件名。因此,在新的 Ubuntu 发行版中,您将找到名为 000-default 的默认文件。将它们放在同一个文件中并没有什么坏处,因此可以保证优先级。 @ceejayoz:如何在文档根目录中设置通配符。我在文档根目录中指定的一个文件夹在自动部署期间发生了更改。

以上是关于带有通配符/非通配符子域混合的 Apache Config的主要内容,如果未能解决你的问题,请参考以下文章

在 apache 2.2.3 上设置通配符子域(带有反向代理)

使用 Apache VirtualHost 创建通配符子域

带有 dnsmasq 的通配符子域

Apache Rewrite - 重定向通配符子域和处理内部 URL 缩短器

在通配符 vhost apache (xampp) 设置中重定向子子域

IIS7中的通配符子域。是否有可能使它们像在Apache中一样?