在 apache 2.4 版中配置子域。*

Posted

技术标签:

【中文标题】在 apache 2.4 版中配置子域。*【英文标题】:configure a subdomain in apache version 2.4.* 【发布时间】:2014-06-04 17:37:10 【问题描述】:

我的 httpd-vhosts.conf 文件中有以下子域配置:

<VirtualHost *:80>
    ServerAdmin foo@bar.com
    DocumentRoot "/home/www"
    ServerName bh.dev
    ServerAlias *.bh.dev
    ErrorLog "/var/log/apache2/bh-error_log"
    CustomLog "/var/log/apache2/bh-access_log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/srv/www/htdocs"
    ServerName blog.bh.dev
    ErrorLog "/var/log/apache2/bh-error_log"
    CustomLog "/var/log/apache2/bh-access_log" common
</VirtualHost>

bh.devbh.dev/blog URL 已成功显示,但 blog.bh.dev 未成功显示。有什么问题?

提前谢谢你。

【问题讨论】:

【参考方案1】:

blog.bh.dev 请求由第一个定义本身处理,因为它也有资格在bh.dev 下。所以把第二个虚拟主机定义放在第一个上面就可以解决问题了。

<VirtualHost *:80>
    DocumentRoot "/srv/www/htdocs"
    ServerName blog.bh.dev
    ErrorLog "/var/log/apache2/bh-error_log"
    CustomLog "/var/log/apache2/bh-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin foo@bar.com
    DocumentRoot "/home/www"
    ServerName bh.dev
    ServerAlias *.bh.dev
    ErrorLog "/var/log/apache2/bh-error_log"
    CustomLog "/var/log/apache2/bh-access_log" common
</VirtualHost>

作为一般规则,我总是将更具体的定义放在更通用的定义之上。

【讨论】:

我已按照您的建议替换了虚拟主机的定义,但遗憾的是问题没有解决。 在此之后您需要重新启动 apache 当然我每次编辑配置文件的时候都重启了apache。

以上是关于在 apache 2.4 版中配置子域。*的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Apache 中使用 SSL 配置多个子域?

如何为开发环境配置 vhosts/apache 子域?

Apache 2.2 禁用未配置的子域

特定子域的 Apache 反向代理

二级域名解析设置及Apache 子域名配置

apache2.2 和 2.4 虚拟主机配置文件