@Olgavm
В начале пути

Как правильно настроить 301 редирект в Nginx при редизайне сайта?

Задача
Есть старый сайт - mysite.ru (главное зеркало), другие зеркала:
а) mysite.com - физически сайта на домене нет, нужен для "закрытия" домена в зоне .com;
б) версии с www.
В результате редизайна и косяка в продакшн попал новый сайт - new.mysite.ru
Требуется склеить старый и новый сайты.
Структуру старого сайта не сохраняем. То есть изменяться будет только server_name

Решение:
Размещаем все файлы нового сайта в папке старого сайта. Имеем два идентичных сайта. Для склейки делаем 301 редирект с нового сайта на старый.
Нашла рекомендацию https://toster.ru/q/443666(дана более года назад) - создаём отдельный блок server под каждый домен/поддомен (см. ниже).
1. Рекомендация актуальна? В документации по Nginx версии с www и без обычно расположены в одном блоке server, а тут всё по разным блокам разложено. Порядок блоков server в данном случае имеет значение?
2. Это и есть постраничный редирект? Читала, что для реализации такого редиректа нужно составить список редиректов (с какой страницы одного сайта на какую страницу другого сайта идёт переадресация). Как это реализуется и в каких случаях?
3. Если бы домены были с разными протоколами (http/https), нужно было бы это учитывать или не имеет значения (при редиректе указан явно протокол цели)?

Вариант "Все домены в одном блоке"
server {
listen 443 ssl;
root /somepath;
server_name mysite.ru www.mysite.ru mysite.com www.mysite.com new.mysite.ru www.new.mysite.ru;
index index.html;

error_page 404 /ErrorPages/404.html;
try_files $uri $uri/ =404;
}

server {
listen 80;
server_name mysite.ru www.mysite.ru mysite.com www.mysite.com new.mysite.ru www.new.mysite.ru;
return 301 https://$server_name$request_uri;
}

Вариант "по рекомендации"
server {
server_name new.mysite.ru;
return 301 https://mysite.ru$request_uri;
}

server {
server_name www.new.mysite.ru;
return 301 https://mysite.ru$request_uri;
}

server {
server_name mysite.com;
return 301 https://mysite.ru$request_uri;
}

server {
server_name www.mysite.com;
return 301 https://mysite.ru$request_uri;
}

server {
server_name www.mysite.ru;
return 301 https://mysite.ru$request_uri;
}

server {
listen 443 ssl;
root /somepath;
server_name mysite.ru;
index index.html;

error_page 404 /ErrorPages/404.html;
try_files $uri $uri/ =404;
}

server {
listen 80;
server_name mysite.ru;
return 301 https://mysite.ru$request_uri;
}
  • Вопрос задан
  • 334 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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