Pedido de hosts virtuais Apache2 (00 - antes de 000-)

1

Eu preciso carregar três hosts virtuais em uma ordem exata para fazer meu esquema de configuração funcionar como esperado.

  1. default (virtualhost padrão do Apache)
  2. phpmyadmin (um virtualhost que serve o phpMyAdmin para todos os subdomínios pma. *)
  3. mysite.com (o virtualhost do meu site)

Quando o Apache carrega o default virtualhost de /etc/apache2/sites-available , ele se torna 000-default in /etc/apache2/sites-enabled , portanto, é o primeiro host virtual (padrão) que o Apache tenta quando uma solicitação é recebida.

Assim, renomeiei meu virtualhost de phpmyadmin para 00-phpmyadmin , para que o Apache tentasse, na ordem:

000-default
00-phpmyadmin
mysite.com

Para minha surpresa, 00-phpmyadmin vem ANTES 000-default ! Veja a saída de 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

Eu tive que renomear 00-phpmyadmin para 0phpmyadmin para que funcionasse como esperado:

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

Você sabe por que o Apache se comporta dessa maneira?

    
por GuiTeK 29.07.2014 / 20:56

1 resposta

4

O código ASCII para o caractere de hífen é 0x2d. O código ASCII para o dígito zero é 0x30. O hífen vem primeiro.

Se você já viu uma lista de arquivos que parece estar classificada, mas tem 000- antes de 00- , sua localidade provavelmente está "ajudando" ignorando pontuação em sua rotina de comparação de strings.

    
por 29.07.2014 / 21:05