Apache 服务器名称 * 通配符不适用于vhost_dbd_module



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

在我在网上找到的各种例子中,他们指示我在虚拟主机中使用"ServerName *"作为通配符。

当我以这种方式配置我的虚拟主机时,服务器只是默认回到默认的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>

但是,当我将其更改为此(将服务器名称指定为 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>

任何想法配置错误?

在弄

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

我首先按顺序移动了它,在其下方移动了其他一些虚拟主机(具有更具体的 ServerName example.tld),数据库主机和静态配置的主机都可以工作。

相关内容

最新更新