我正在尝试使用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),数据库主机和静态配置的主机都可以工作。