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

Виртуальный хост для объединенного старого / нового сайта с общими поддоменами?

Недавно мы создали новый «основной веб-сайт», который объединяет два старых сайта, и нам нужно выполнить окончательную работу по настройке DNS и Apache для каждого из старых. (Чтобы прояснить для некоторых, это небольшая компания, у которой нет ресурсов для найма экспертов, и я пытаюсь помочь в области, которая не является моей специальностью, и определить, как эти изменения необходимо внести.)

Мы хотим указать на старых сайтах папку на новом сайте, которая будет «переводить» запросы, а также пару старых поддоменов, указывающих на новые подпапки в папках «перевода».

Я рассмотрел связанные вопросы, но все они включают соображения, которые выходят за рамки моей лиги и относятся к общим хостам. Оба наших сайта расположены на EC2, поэтому мы полностью контролируем / несем ответственность за то, что меняется.

Запутанная часть заключается в том, что один IP-адрес используется для нескольких доменов, и все они имеют одинаковые поддомены. Я не понимаю, как убедиться, что основные домены работают правильно, и что поддомены для каждого остаются нетронутыми после того, как все будет завершено.

http://www.newsite.com   ==>  c:\www\index.php
http://subX.newsite.com  ==>  c:\www\subdomainX\index.php
http://www.oldsite.com   ==>  c:\www\oldsite\index.php
http://subX.oldsite.com  ==>  c:\www\oldsite\subdomainX\index.php

http://www.newsite.com   ==>  www.newsite.com/
http://subX.newsite.com  ==>  www.newsite.com/subdomainX/
http://www.oldsite.com   ==>  www.newsite.com/oldsite/
http://subX.oldsite.com  ==>  www.newsite.com/oldsite/subdomainX/

Старый сайт http.conf (это закрывается)

<VirtualHost *:80>
  ServerName oldsite.com
  DocumentRoot "c:/apache/htdocs/hosted/oldsite"
  ServerAlias *.oldsite.com 10.20.30.40
  RewriteEngine On
  RewriteOptions Inherit
</VirtualHost>

<VirtualHost *:80>
  ServerName subX.oldsite.com
  DocumentRoot "c:/apache/htdocs/hosted/oldsite/subX"
  RewriteEngine On
  RewriteOptions Inherit
</VirtualHost>

НОВЫЙ http.conf (Это в настоящее время работает в производстве)

<VirtualHost *:80>
  ServerName subX.newsite.com
  DocumentRoot "C:/www/subX"
  RewriteEngine Off
</VirtualHost>

Чего я пытаюсь достичь:, но ищу руководства / ясности относительно правильности:

Для http://www.oldsite.com ==> c: \ www \ oldsite \ index.php

<VirtualHost *:80>
    ???????????
    ServerName oldsite.com
    DocumentRoot "c:/www/oldsite"
</VirtualHost>

Для http://subX.oldsite.com ==> c: \ www \ oldsite \ subdomainX \ index.php

<VirtualHost *:80>
    ???????????
    ServerName subX.oldsite.com
    DocumentRoot "c:/www/oldsite/subX"
</VirtualHost>

я считать изменения DNS ничем не отличаются, кроме нового IP-адреса, но я понятия не имею, как подойти к настройке Apache для размещения общих поддоменов.

Обновить

Мы удаляем старый домен, поэтому, когда кто-то переходит на www.oldsite.com или sub1.oldsite.com, нам нужно постоянное перенаправление в соответствующую папку на www.newsite.com. Оттуда index.php, содержащийся в папке, сделает всю работу. URL-адрес типа www.oldsite.com/somewhere будет обрабатываться www.newsite.com/oldsite/index.php.

Может ли кто-нибудь помочь мне в этом? Я пытаюсь понять, ЧТО настроить для тестирования, и как только я нажимаю «сохранить», все черт возьми, если это не правильно. Мои навыки DNS / Apache в лучшем случае ненадежны, и это производственная среда, поэтому я не могу позволить себе рисковать временем простоя моей типичной кривой обучения, лол.

Я настоятельно, сильно рекомендую настроить тестовый сервер (тоже бэкапы. Однозначно бэкапы). Помимо самой конфигурации виртуального хоста, перемещение приложений в новый дом требует тестирования всего стека (выполняется ли правильный PHP, подключается ли PHP к правильной базе данных и т. Д.). Либо установите идентичный стек серверов на локальный ПК с Windows, либо, в идеале, заплатите несколько долларов, чтобы запустить новый экземпляр вашего образа Amazon с другим общедоступным IP-адресом (я не использую Windows на Amazon, поэтому я не уверен, как вы это делаете это но этот вопрос выглядит так, как будто это может быть отправной точкой для получения копии вашего текущего экземпляра).

В любом случае, чтобы получить доступ к тестовой системе для этой цели, вместо того, чтобы вносить изменения в DNS сейчас, вы должны отредактируйте файл хостов для переопределения DNS на одном локальном компьютере, чтобы разрешить все ваши имена хостов на IP-адрес тестового сервера. Это сделано для того, чтобы вы могли тестировать, используя фактические имена хостов (а не "test.newsite.com"), поскольку Apache проверяет имя хоста, введенное в браузере и отправленное в Host: заголовок запроса против ServerName и ServerAlias директивы, чтобы решить, какие VirtualHost блок для использования. Вы должны добавить одну строку со всеми именами хостов:

1.2.3.4 oldsite.com www.oldsite.com sub.oldsite.com www.newsite.com newsite.com etc

Что касается конфигурации, существующая конфигурация сайта новостей должна работать как есть. Вы захотите сделать это первым блоком VirtualHost, чтобы Apache использовал его по умолчанию. Для всех старых сайтов, чтобы перенаправить все запросы к заданному имени хоста на один URL-адрес, вы можете использовать блок VirtualHost, содержащий RedirectPermanent / (который перенаправляет каждый запрос, начиная с /, что они все делают):

<VirtualHost *:80>
  ServerName old_hostname
  RedirectPermanent / http://new_hostname/oldsite/index.php
</VirtualHost>

ServerName и ServerAlias должно соответствовать тому, что было у вас раньше, но я бы удалил IP-адрес из ServerAlias в случае, если какой-то действительно ужасный клиент, который не подчиняется HTTP 1.1, застревает в цикле перенаправления, запрашивая IP снова и снова.

Вам нужно будет убедиться, что у вас есть mod_alias включен на вашем сервере для использования Redirect команды.

Как только у вас будет заведомо хорошая конфигурация Apache, используйте ее для настройки сервера newsite.com (сохраните резервную копию предыдущей конфигурации на всякий случай). Теперь вы можете выключить тестовый сервер, снова отредактировать файл hosts и удалить созданную вами строку, чтобы вы могли дважды проверить, правильно ли ваш новый сервер обслуживает newsite.com, включая все файлы newsite.com/oldsite/index Страницы .php работают правильно, когда вы вводите URL напрямую. Затем вы можете снова отредактировать файл хоста и ввести новый IP-адрес сервера со всеми именами хостов старого сайта, а затем проверить, правильно ли новый сервер перенаправляет сайты oldsite.com.

Наконец, вы отредактируете конфигурацию DNS для oldsite.com, чтобы заменить старый IP-адрес новым. (Настало время понять, что вам нужно знать, что делать с email@oldsite.com, если он не размещен где-то еще). Обратите внимание на настройки TTL, так как старый сервер будет продолжать получать запросы, пока не истечет срок действия всех кешей, поэтому вы не сможете выключить его по крайней мере так долго.