См. также совет о переходе на HTTPS
Когда переезжали на новый домен, мы хотели, чтобы для пользователей ничего не изменилось. Чтобы при переезде сохранилась авторизация, доступ к Бюросфере, книгам и школьному кабинету. Чтобы даже имя и почта в форме комментариев к советам сохранились.
См. также совет о переходе на HTTPS
Вся эта информация хранится в куках, которые привязаны к домену и браузеру пользователя: куки на artgorbunov.ru недоступны на bureau.ru. Чтобы ничего не потерять при переезде, мы перенесли куки со старого домена на новый серией редиректов:
Все запросы к старому домену перенаправили постоянным редиректом на новый домен.
Когда пользователь в первый раз заходил на новый домен, мы перенаправляли его на старый. Собирали его куки на старом домене, шифровали, и упаковывали их в одну строку. Затем вместе с этой строкой перенаправляли пользователя по специальному адресу на новом домене.
Там мы распаковывали и выставляли куки для нового домена. Затем перенаправляли пользователя обратно — на тот урл, с которого начался процесс переноса кук.
Когда пользователь заходил на сайт в следующий раз, никаких редиректов уже не было.
Сложности
Поисковые роботы и РСС‑читалки не поддерживают куки. Чтобы они не попадали в бесконечный цикл из редиректов, отфильтровали их по юзер‑агенту и сразу отдавали им страницы с нового домена.
Чтобы не нагружать лишними редиректами клиентов, также отфильтровали запросы к статике: картинкам, стилям и шрифтам.
Чтобы не налажать с куками и не сломать всё у всех, мы развернули точную копию сайта на отдельном домене artgorbunov‑s1.ru. Написали интеграционные тесты, составили тестовый план, покрывающий критичную функциональность сайта, и отладили перенос кук с artgorbunov‑s1.ru на bureau.ru.
Мы заложили полгода на перенос кук: открыли новый домен в июне 2017, выключили редиректы в январе 2018.
Ещё по теме
P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.