【问题标题】:Apache ServerName * wildcard not working with vhost_dbd_moduleApache ServerName * 通配符不适用于 vhost_dbd_module
【发布时间】:2015-05-12 12:02:19
【问题描述】:

我正在尝试使用 vhost_dbd_module 将我的虚拟主机迁移到 mysql 数据库。

在我在网上找到的各种示例中,它们指示我在 VirtualHost 中使用“ServerName *”作为通配符。

当我以这种方式配置我的 VirtualHost 时,服务器只是默认回到默认的 DocumentRoot。它不查询mysql数据库。

<VirtualHost *:80>
        # catch all other requests that don't get caught above
        ServerName *
        # fallbackDocumentRoot in case mysql server is down
        DocumentRoot /var/html/404

        DBDriver mysql
        DBDParams "host=<hostname> user=<user> dbname=<dbname>"
        DBDocRoot "SELECT documentRoot FROM virtualhosts WHERE serverName = %s" HOSTNAME
</VirtualHost>

但是,当我将其更改为此(将 ServerName 指定为 domain.tld)时,它可以正常工作(查询数据库中的 domain.tld 并为 domain.tld 返回正确的文档根)

<VirtualHost *:80>
        # catch all other requests that don't get caught above
        ServerName domain.tld
        # fallbackDocumentRoot in case mysql server is down
        DocumentRoot /var/html/404

        DBDriver mysql
        DBDParams "host=<hostname> user=<user> dbname=<dbname>"
        DBDocRoot "SELECT documentRoot FROM virtualhosts WHERE serverName = %s" HOSTNAME
</VirtualHost>

知道什么是错误配置吗?

【问题讨论】:

    标签: apache vhosts virtual-hosts dbd mod-vhost-alias


    【解决方案1】:

    在搞砸了一些之后,似乎 ServerName * 仅在它是系统中的第一个虚拟主机时才有效。

    我先按顺序移动了它,在它下面还有一些其他虚拟主机(带有更具体的 ServerName example.tld),并且 DB 主机和静态配置的主机都工作。

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 2022-01-07
      • 2013-01-27
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      相关资源
      最近更新 更多