Я пытаюсь, чтобы все поддомены указывали на одно место на диске, а конкретный поддомен (dev) указывал на другое.
Я пробовал это:
<VirtualHost cueflash.com>
ServerAdmin webmaster@localhost
ServerAlias www.cueflash.com *.cueflash.com
DocumentRoot /home/cueflash/www/cueflash.com
CustomLog /var/log/apache2/cueflash.com.log combined
ErrorLog /var/log/apache2/cueflash.com.error.log
</VirtualHost>
<VirtualHost dev.cueflash.com>
ServerAdmin webmaster@localhost
ServerAlias dev.cueflash.com
DocumentRoot /home/cueflash/www/dev.cueflash.com
CustomLog /var/log/apache2/cueflash.com.dev.log combined
ErrorLog /var/log/apache2/cueflash.com.error.dev.log
</VirtualHost>
Но оба, похоже, указывают на основной сайт.
«Захват» подстановочных знаков происходит в Apache в порядке очереди. Попробуйте поменять местами эти vhosts так, чтобы сайт разработчика был первым в списке.
Ладно, разобрался, как это сделать. По сути, вы сначала делаете все хосты без подстановочных знаков, а затем подстановочные знаки отдельно, поскольку он следует первому порядку приоритета (первое успешное совпадение - это то, которое используется).
<VirtualHost *>
ServerName cueflash.com
ServerAlias www.cueflash.com cueflash.com
ServerAdmin webmaster@localhost
DocumentRoot /home/cueflash/www/cueflash.com
</VirtualHost>
<VirtualHost *>
ServerName dev.cueflash.com
ServerAdmin webmaster@localhost
DocumentRoot /home/cueflash/www/dev.cueflash.com
</VirtualHost>
<VirtualHost *>
ServerName *.cueflash.com
ServerAdmin webmaster@localhost
DocumentRoot /home/cueflash/www/cueflash.com
</VirtualHost>
Вы можете установить
<VirtualHost *>
к
<VirtualHost *:80>
в зависимости от вашего слушателя. Кроме того, не то чтобы я не включил различные настройки для таких вещей, как журналы ошибок. Они понадобятся вам в каждом из ваших списков VirtualHost.
Я немного запутался. Похоже, что оба имени хоста, которые вы использовали выше (dev.cueflash.com и cueflash.com), разрешаются на один и тот же IP-адрес, что предполагает, что вы пытаетесь использовать виртуальный хостинг на основе имени ... но ни один из ваших блоков VirtualHost не включает директива ServerName (и аргументы блока VirtualHost, возможно, неверны для именованного виртуального хостинга). Я не уверен, как ведет себя ServerAlias без соответствующего ServerName.
Вам также необходимо будет убедиться, что в вашей конфигурации есть соответствующая директива NameVirtualHost. Как указано в документации, если вы используете виртуальные хосты на основе имен, аргумент открывающего контейнера должен точно соответствовать аргументу директивы NameVirtualHost. Например:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName cueflash.com
...
</VirtualHost>
Может быть, вы хотите взглянуть на документацию по поддержка виртуального хоста на основе имени для Apache.
Для имен хостов, которые явно не соответствуют директиве ServerName или ServerAlias, вы получаете «виртуальный хост по умолчанию», который является «любым виртуальным хостом, который Apache найдет первым в вашей конфигурации». Я подозреваю, что это, в сочетании с другими вашими проблемами, является причиной того, что все попадает на основной сайт.