Virtualhost перенаправляет несуществующие поддомены и удаляет www

Я хотел бы настроить свои виртуальные хосты, чтобы сделать следующее. Для фона, прежде чем у меня был доступ к виртуальным хостам, я сделал это на другом сервере в .htaccess, полностью переписав. Как вы можете предположить, это было чрезвычайно медленно.

  • Запросы к example.com без изменений
  • Запросы на www.example.com постоянно перенаправляются на example.com
  • Запросы к существующему поддомену (a.example.com или b.example.com) без изменений, доставляют собственный контент
  • Запросы к несуществующему поддомену перенаправляются на example.com

vhosts.conf

<VirtualHost *:80>
    ServerName example.com
</VirtualHost>

<VirtualHost *:80>
    ServerName a.example.com
</VirtualHost>

<VirtualHost *:80>
    ServerName b.example.com
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    Redirect permanent / http://example.com
</VirtualHost>

Выпуск 1

В этом случае b.example.com почему-то совпадает, а a.example.com перенаправляет на example.com. Это кажется странным.

Выпуск 2

rstlne.example.com отображает содержимое example.com, но адрес по-прежнему показывает rstlne.example.com. Это ожидаемо, но мне нужно знать, как перенаправить это дело на example.com. Единственное, что приходит на ум при перенаправлении несуществующих доменов, это чтобы первый (по умолчанию) виртуальный хост имел перенаправление, но в этом случае example.com будет соответствовать и будет циклом перенаправления.


person theherk    schedule 20.11.2013    source источник


Ответы (1)


Ух ты. Оказывается, у меня это было очень близко к правильному. Ревизия ниже работает корректно. Моими основными проблемами были:

  1. :e scp://<shortname>//etc/httpd/conf/vhosts/vh.conf в vim, хотя он говорит, что консоль вернула 1, на самом деле не обновляет файлы, которым требуются привилегии sudoedit. Полная глупая ошибка. Использование sudoedit или аналогичного в консоли ssh было необходимо для фактического внесения изменений, требующих root.
  2. Я понятия не имел, что кеш браузера играет роль в запоминании перенаправления, поэтому все работало неправильно.

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

vhosts.conf

<VirtualHost *:80>
    ServerName example.com
    ...
</VirtualHost>

<VirtualHost *:80>
    ServerName a.example.com
    ...
</VirtualHost>

<VirtualHost *:80>
    ServerName b.example.com
    ...
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias *.example.com
    Redirect permanent / http://example.com
</VirtualHost>

Проблема 1 Решение

Очистка кеша моего браузера решила эту проблему. Это действительно работает так, как ожидалось.

Проблема 2 Решение

Совпадение с подстановочным доменом записи CNAME или A в последнем виртуальном хосте, выполняющем перенаправление. Он должен быть последним, потому что виртуальные хосты сопоставляются по порядку. Таким образом, любые поддомены, которые еще не совпали (существуют), будут перехвачены подстановочным знаком и, как и www, будут перенаправлены.

У меня все еще есть некоторые оговорки по поводу постоянного сопоставления подстановочных знаков из-за возможного добавления поддоменов позже, но эффект от этого может быть минимальным или никаким для SEO.

person theherk    schedule 21.11.2013