我已经设置了 Apache 服务器,并将子域名链接到一个应用程序,该应用程序将找到合适的数据库进行操作,如果数据库不存在,则退出
因此我有一个 *.domain.tld
但现在我确实需要一些用于服务器应用程序的子域名,例如 phpmyadmin.domain.tld
所以我这样设置
<VirtualHost *>
DocumentRoot "/var/www/phpmyadmin"
ServerName phpmyadmin.domain.tld
<Directory "/var/www/phpmyadmin">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
<VirtualHost *>
DocumentRoot /var/www/hidden/app/public
ServerName *.domain.tld
<Directory "/var/www/hidden/app/public">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
但是这样,无论我提供 test.domain.tld、phpmyadmin.domain.tld、helpme.domain.tld 等等,它总是转到 phpmyadmin。
如果我放置第二个虚拟主机(* .domain.tld),它不会转到 phpmyadmin.domain.tld,而只会转到应用程序
我究竟做错了什么?
更新:
还是行不通
这样,无论我去 test.domain.tld phpmyadmin.domain.tld 等等,它都只显示 phpmyadmin。
<VirtualHost *>
DocumentRoot /var/www/phpmyadmin
<Directory "/var/www/phpmyadmin">
allow from all
Options +Indexes
</Directory>
ServerName phpmyadmin.domain.tld
ServerAlias phpmyadmin.domain.tld
</VirtualHost>
<VirtualHost *>
DocumentRoot /var/www/hidden/app/public
ServerName domain.tld
ServerAlias *.domain.tld
<Directory "/var/www/hidden/app/public">
Allowoverride All
allow from all
Options +Indexes
</Directory>
</VirtualHost>
这样,无论我进入 test.domain.tld phpmyadmin.domain.tld 等,它都只会显示应用程序
<VirtualHost *>
DocumentRoot /var/www/hidden/app/public
ServerName domain.tld
ServerAlias *.domain.tld
<Directory "/var/www/hidden/app/public">
Allowoverride All
allow from all
Options +Indexes
</Directory>
</VirtualHost>
<VirtualHost *>
DocumentRoot /var/www/phpmyadmin
<Directory "/var/www/phpmyadmin">
allow from all
Options +Indexes
</Directory>
ServerName phpmyadmin.domain.tld
ServerAlias phpmyadmin.domain.tld
</VirtualHost>
apachectl -S 输出
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:* phpmyadmin.domain.tld (/etc/httpd/conf/httpd.conf:1015)
*:* domain.tld (/etc/httpd/conf/httpd.conf:1025)
Syntax OK
答案1
添加NameVirtualHost *
到您的配置。
(如果这不起作用,请提供来自的输出apachectl -S
。)
答案2
该ServerName
指令不允许使用通配符。为此,您需要ServerAlias
。
所以让它像
ServerName somethingelse.domain.tld
ServerAlias *.domain.tld