0

我正在尝试使用 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 并返回正确的 documentroot 以获取 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>

任何想法什么是错误配置?

4

1 回答 1

0

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

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

于 2015-03-11T05:49:37.777 回答