Apache2 虚拟主机顺序(00- 在 000- 之前)

Apache2 虚拟主机顺序(00- 在 000- 之前)

我需要按照准确的顺序加载三个虚拟主机,以使我的配置方案按预期工作。

  1. default(Apache 默认虚拟主机)
  2. phpmyadmin(为所有 pma.* 子域提供 phpMyAdmin 服务的虚拟主机)
  3. mysite.com(我的网站的虚拟主机)

当 Apachedefault从 加载虚拟主机时/etc/apache2/sites-available,它会变成000-default,因此/etc/apache2/sites-enabled它是 Apache 在收到请求时尝试的第一个(默认)虚拟主机。

因此,我将虚拟主机从 重命名为 ,phpmyadmin以便00-phpmyadminApache 可以按以下顺序尝试:

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-,可能正在通过在其字符串比较例程中跳过标点符号来“帮助”您。

相关内容