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

Подстановочный DNS в сочетании с DNS с одним поддоменом

Я пытаюсь, чтобы все поддомены указывали на одно место на диске, а конкретный поддомен (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 найдет первым в вашей конфигурации». Я подозреваю, что это, в сочетании с другими вашими проблемами, является причиной того, что все попадает на основной сайт.