我需要按照准确的顺序加载三个虚拟主机,以使我的配置方案按预期工作。
default
(Apache 默认虚拟主机)phpmyadmin
(为所有 pma.* 子域提供 phpMyAdmin 服务的虚拟主机)mysite.com
(我的网站的虚拟主机)
当 Apachedefault
从 加载虚拟主机时/etc/apache2/sites-available
,它会变成000-default
,因此/etc/apache2/sites-enabled
它是 Apache 在收到请求时尝试的第一个(默认)虚拟主机。
因此,我将虚拟主机从 重命名为 ,phpmyadmin
以便00-phpmyadmin
Apache 可以按以下顺序尝试:
000-default
00-phpmyadmin
mysite.com
令我惊讶的00-phpmyadmin
是,前 000-default
! 查看输出apache2ctl -S
:
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server MY_SERVER_HOSTNAME (/etc/apache2/sites-enabled/00-phpmyadmin:1)
port 80 namevhost MY_SERVER_HOSTNAME (/etc/apache2/sites-enabled/00-phpmyadmin:1)
port 80 namevhost MY_SERVER_HOSTNAME (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost mysite.com (/etc/apache2/sites-enabled/mysite.com:1)
Syntax OK
我必须重命名00-phpmyadmin
才能0phpmyadmin
使其按预期工作:
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server MY_SERVER_HOSTNAME (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost MY_SERVER_HOSTNAME (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost MY_SERVER_HOSTNAME (/etc/apache2/sites-enabled/0phpmyadmin:1)
port 80 namevhost mysite.com (/etc/apache2/sites-enabled/mysite.com:1)
Syntax OK
您知道为什么 Apache 会这样做吗?
答案1
连字符的 ASCII 码为 0x2d。数字零的 ASCII 码为 0x30。连字符在前。
如果您看到一个文件列表似乎已经排序,但在您的语言环境000-
之前00-
,可能正在通过在其字符串比较例程中跳过标点符号来“帮助”您。