Я использую apache на ubuntu 14.04. Я установил для своего сайта домен с подстановочными знаками, но он не работает так, как мне хотелось бы. я хочу
www.example.com --> /var/www/mysite
example.com --> /var/www/mysite
и все остальное, чтобы пойти
*.example.com --> /var/www/myothersite
НО, прямо сейчас это работает так
example.com --> /var/www/mysite
и
www.example.com --> /var/www/myothersite
*.example.com --> /var/www/myothersite
Я создал виртуальные хосты, создав два файла conf в sites-available /
example.com.conf
catchall.example.com.conf
Вот содержимое example.com.conf
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/mysite
Вот содержимое catchall.example.com.conf
ServerName catchall.example.com
ServerAlias *.example.com
DocumentRoot /var/www/myothersite
После того, как я создал файлы, я запустил a2ensite для файлов и перезагрузил apache. Есть идеи, как я могу достичь желаемых результатов, все еще используя сайты-доступные и a2ensite?
Я думаю, проблема в том, что Apache разбирает включенные файлы конфигурации в лексикографическом порядке, а catchall.example.com.conf анализируется перед example.com.conf.
В результате www.example.com
совпадает с *.example.com
, а не явный ServerAlias в файле example.com.conf.
Решение состоит в том, чтобы переименовать catchall.example.com.conf во что-то вроде wildcard.example.com.conf, которое идет позже по алфавиту, а затем example.com.conf.