Назад | Перейти на главную страницу

Поддомены Apache и существующий поддомен с подстановочными знаками

Итак, у меня есть существующая запись DNS A с подстановочными знаками и настройка виртуального сервера поддомена следующим образом

DocumentRoot /path/to/code
<Directory "/path/to/code">
allow from all
Options +Indexes
</Directory>

ServerName existing.domain.co.uk
ServerAlias *.domain.co.uk

... Теперь я хочу добавить еще один виртуальный сервер, который работает таким же образом, но с суб-субдоменом, чтобы позволить мне получить доступ к ветке кодовой базы из чего-то вроде monkeys.alt.domain.co.uk

DocumentRoot /path/to/altcode
<Directory "/path/to/altcode">
allow from all
Options +Indexes
</Directory>

ServerName alt.domain.co.uk
ServerAlias *.alt.domain.co.uk

В файле зоны DNS я добавил еще одну запись A из * .alt в IP (который оказывается тем же IP, что и запись * A).

Теперь, я думаю, происходит то, что существующий подстановочный знак подбирает monkeys.alt.domain.co.uk и отправив его на существующий виртуальный сервер, а не на новый.

Мой вопрос: Как мне получить трафик из monkeys.alt.domain.co.uk перейти на новый виртуальный сервер 'alt'?

Apache работает с виртуальными хостами в том же порядке, в котором он читает их конфигурацию. Итак, если он прочитает первым, ServerAlias *.domain.co.uk тогда будет соответствовать любой sub или sub.sub.domain. Если Apache умеет читать первым ServerAlias *.alt.domain.co.uk то будет соответствовать любой поддомен alt.domain.co.uk, но не existing.domain.co.uk, который будет соответствовать следующему vHost.

Поэтому, если у вас есть оба виртуальных хоста, описанные в одном файле, поместите второй (vHost monkey.alt) перед основным vHost. Если они находятся в разных файлах, переименуйте файл, чтобы сначала был прочитан файл конфигурации vHost обезьяны (например, добавьте 0 в начале).