带有通配符/非通配符子域混合的 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 Rewrite - 重定向通配符子域和处理内部 URL 缩短器