我有我的Apache服务器设置和我的子域链接到应用程序,然后将find适当的数据库工作或退出,如果它不存在
所以为此,我有一个* .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>
但是这样它总是去phpmyadmin wathever我给test.domain.tld phpmyadmin.domain.tld helpme.domain.tld等。
如果我把第二个虚拟主机(* .domain.tld之一)它不会去phpmyadmin.domain.tld,但只是对应用程序
我究竟做错了什么?
更新:
还是行不通
这样它只显示phpmyadmin无论我去test.domain.tld phpmyadmin.domain.tld等
<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
将NameVirtualHost *添加到您的configuration。
(如果这没有办法,请提供apachectl -S的输出。)
ServerName指令不允许使用通配符。 为此,你需要ServerAlias 。
所以,就像这样
ServerName somethingelse.domain.tld ServerAlias *.domain.tld