Если субдомен не существует

Это - старый вопрос, но я столкнулся с ним при работе над чем-то подобным, и имейте немного дополнительной информации для добавления:

  1. В то время как quux технически корректен, в действительности Windows действительно позволяет это поведение. Опция 'Use the default gateway on the remote network' делает точно это; при проверке, если локальный DNS возвращает NXDOMAIN, Windows затем пробует VPN DNS. Это не играет роли здесь, так как Windows пробует VPN сначала для начала. Но если бы он мог бы изменить тот порядок, затем проверив, что опция дала бы ему точно поведение, он искал.

  2. Существует способ сделать то, что Вы хотите, потому что я просто заставил его произойти. Моя домашняя сеть раньше полагалась на встроенный сервер DHCP моего маршрутизатора, устанавливала для рекламы серверов OpenDNS. Я недавно настроил сервер DHCP+DNS на отдельной машине в сети, набор, чтобы передать OpenDNS для нелокальных адресов.

    По некоторым причинам это изменилось, как Windows располагает по приоритетам серверы DNS. Прежде, это использовало бы VPN DNS сначала (мое желаемое поведение), теперь это использует локальный DNS сначала (Ваше желаемое поведение). Если я выключаю свой локальный DHCP+DNS и возвращаюсь к использованию моего маршрутизатора, VPN идет сначала снова.

Эта информация может помочь Вам определить проблему..., если Вы действительно понимаете это, сообщите мне, так как я пытаюсь выяснить, как сделать противоположное.

Примечание: Я знаю, что это должно, возможно, быть комментарием, но существует требование представителя...

3
задан 31 January 2010 в 18:29
2 ответа

Можно создать VirtualHost по умолчанию, который инициирован каждый раз, когда нет никакого соответствия настроенного NamedVirtualHost. Это было бы в основном похоже на первый пример, который Вы дали. Затем Вы добавляете NamedVirtualHosts для всех доменов, которые Вы хотите обработать (например, добавить ServerName www.example.com и т.д.).

Каждый раз, когда виртуальный хост требуют, это не настроено, значение по умолчанию будет служить тому запросу. На этом Вы могли бы хотеть или отобразить определенное содержание и/или инициировать перенаправление к существующему (или отличающийся) сервер.

Вы, возможно, должны были бы объявить NameVirtualHost *:80 до блоков VirtualHost.

1
ответ дан 3 December 2019 в 07:18

Если NameVirtualHost *:80 или что-то подобное уже не находится в Ваших файлах конфигурации, это должно будет быть. Это необходимо, когда Ваши VirtualHosts используют тот же IP-адрес и порт (который ваши). Это говорит Apache, что он должен использовать Хост: заголовок в Запросе HTTP для выбора, который VirtualHost должен обработать тот запрос.

У Вас должна также быть директива ServerName в каждом VirtualHost при использовании NameVirtualHost. Это - то, какой Apache соответствует Хосту: заголовок к. Директива ServerName не может содержать * символ. ServerName должен соответствовать Вашему домену точно. Если Вы захотите соответствовать www.devhouse.nl, а также devhouse.nl затем, то Вам будет нужна директива ServerAlias. У Вас может быть столько директив ServerAlias, сколько Вам нравится только только один ServerName.

ServerName devhouse.nl
ServerAlias www.devhouse.nl
ServerAlias mail.devhouse.nl

VirtualHost с вышеупомянутым в нем соответствовал бы Запросу HTTP, который был отправлен в один из тех трех доменов. Любой другой запрос перейдет к VirtualHost по умолчанию.

Первый VirtualHost, перечисленный в файлах конфигурации, станет VirtualHost по умолчанию. Это - то, которое обработает запрос, если оно не будет соответствовать никакому другому VirtualHost. Если Вы хотите тот, Вы перечислили второй, чтобы быть значением по умолчанию, необходимо будет подкачать их вокруг в файле.

Документация Apache относительно этого довольно хороша: http://httpd.apache.org/docs/2.2/vhosts/examples.html

У Вас может быть список Apache Ваш VirtualHosts и что приказывает, чтобы они вошли с командой apachectl -S (Это - капитал S),

Include в конце выглядит довольно нечетным. Первая часть списка содержания того включенного файла?

В случае, если все это слишком много для принятия сразу, что необходимо сделать, вот:

  1. Подкачайте два VirtualHosts вокруг.
  2. Поместить NameVirtualHost *:80 перед ними обоими.
  3. Избавьтесь от *. из директивы ServerName или замены это с www. Не имеет значения точно, что входит в VirtualHost по умолчанию, пока это - домен, которому Вы хотите соответствовать.
  4. Добавьте директиву ServerName и дополнительно некоторые директивы ServerAlias к второму VirtualHost.
1
ответ дан 3 December 2019 в 07:18

Теги

Похожие вопросы