Поддомен подстановочного знака виртуального хоста поддомена подстановочного символа в apache2.4 - PullRequest
0 голосов
/ 08 мая 2020

В настоящее время я работал с конфигурацией поддомена с подстановочными знаками, как показано ниже:

<VirtualHost *:80>
    ServerAlias *.domain
    ErrorLog /tmp/error.log
    CustomLog /tmp/access.log combined
    VirtualDocumentRoot /var/www/%1/public
<Directory "/var/www">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

, но если я введу sub.sub.domain вернется к vhost по умолчанию. Как настроить путь к основному домену / root? Я пробовал ниже conf, но все еще не работал:

<VirtualHost *:80>
    ServerAlias *.*.domain
    ErrorLog /tmp/error.log
    CustomLog /tmp/access.log combined
    VirtualDocumentRoot /var/www/%2/public
<Directory "/var/www">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

Я изменил% 2 на% 1, все еще не работает.

Какой синтаксис правильный?

1 Ответ

0 голосов
/ 08 мая 2020

Приведенный выше код имеет правильный синтаксис, но я просто указал неправильный порядок размещения. Итак, правильный ответ - поместить второй вверху над первым.

Ниже пример полной конфигурации:

<VirtualHost *:80>
    ServerAlias *.*.domain
    ErrorLog /tmp/error.log
    CustomLog /tmp/access.log combined
    VirtualDocumentRoot /var/www/%2/public
<Directory "/var/www">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAlias *.domain
    ErrorLog /tmp/error.log
    CustomLog /tmp/access.log combined
    VirtualDocumentRoot /var/www/%1/public
<Directory "/var/www">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

Apache пропускает / игнорирует тот же субдомен / домен config в порядке возрастания сверху. sub.sub.domain также является частью * .domain, поэтому, если я хочу его настроить, я должен поместить конфигурацию вверху или, если использовать другую конфигурацию файла, использовать меньшее имя номера.

Несколько ServerAlias ​​или ServerName или NameVirtualHostlines выдаст предупреждение «NameVirtualHost *: 80 не имеет VirtualHosts». Apache проигнорирует вторую директиву и будет использовать первую определенную строку NameVirtualHost. Кажется, это происходит, когда вы используете несколько файлов конфигурации виртуального хоста и не понимаете, что вам нужно только один раз определить конкретную строку NameVirtualHost

ссылка

Простое решение но я работаю обходным путем на несколько часов и надеюсь, что это поможет другим людям вроде меня.

...