Когда переезжали на новый домен, мы хотели, чтобы для пользователей ничего не изменилось. Чтобы при переезде сохранилась авторизация, доступ к Бюросфере, книгам и школьному кабинету. Чтобы даже имя и почта в форме комментариев к советам сохранились.

Вся эта информация хранится в куках, которые привязаны к домену и браузеру пользователя: куки на artgorbunov.ru недоступны на bureau.ru. Чтобы ничего не потерять при переезде, мы перенесли куки со старого домена на новый серией редиректов:

Алгоритм переноса кук из спецификации

Все запросы к старому домену перенаправили постоянным редиректом на новый домен.

Когда пользователь в первый раз заходил на новый домен, мы перенаправляли его на старый. Собирали его куки на старом домене, шифровали, и упаковывали их в одну строку. Затем вместе с этой строкой перенаправляли пользователя по специальному адресу на новом домене.

Там мы распаковывали и выставляли куки для нового домена. Затем перенаправляли пользователя обратно — на тот урл, с которого начался процесс переноса кук.

Когда пользователь заходил на сайт в следующий раз, никаких редиректов уже не было.

Сложности

Поисковые роботы и РСС‑читалки не поддерживают куки. Чтобы они не попадали в бесконечный цикл из редиректов, отфильтровали их по юзер‑агенту и сразу отдавали им страницы с нового домена.

Чтобы не нагружать лишними редиректами клиентов, также отфильтровали запросы к статике: картинкам, стилям и шрифтам.

Чтобы не налажать с куками и не сломать всё у всех, мы развернули точную копию сайта на отдельном домене artgorbunov‑s1.ru. Написали интеграционные тесты, составили тестовый план, покрывающий критичную функциональность сайта, и отладили перенос кук с artgorbunov‑s1.ru на bureau.ru.

Мы заложили полгода на перенос кук: открыли новый домен в июне 2017, выключили редиректы в январе 2018.

Ещё по теме

P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.

Веб‑разработкаЗолотой фонд
Отправить
Поделиться
Запинить

Рекомендуем другие советы