我正在尝试使用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>
但是,当我将其更改为this(将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>
任何错误配置的想法?
答案 0 :(得分:0)
在弄乱了一些之后,似乎ServerName *仅在它是系统中的FIRST VirtualHost时才有效。
我先按顺序移动它,其下面有一些其他虚拟主机(具有更具体的ServerName example.tld),并且数据库主机和静态配置的主机都工作。