По написанию конфигурационного файла Nginx с redirect 301 существует много рекомендаций. Как создать правильный редирект, который не плодит дубли, ухулшающие SEO.
Содержание
Что такое Nginx redirect 301
Nnginx 301 redirect является формой перенаправления HTTP. Это очень полезный способ правильного перенаправления адресов в браузере клиента. Можно использовать перенаправление HTTP, чтобы перенаправить один домен или адрес на другой домен или адрес. Существует несколько типов перенаправлений, каждый из которых имеет разное значение в клиентском браузере.
Владельцам веб-сайтов обычно необходимо делать это перенаправление при смене доменов или переупорядочении контента на своем веб-сайте. Такие перенаправления нужны, если ваш контент был постоянно перемещен на новое место, например, когда вы меняете доменные имена или серверы.
Nginx redirect 301 с www на без www и с http на https
Если вам нужно создать Nginx redirect, вы можете выбрать один из нескольких вариантов. Самый простой и быстрый способ выполнения перенаправления — использование оператора return
.
Для выполнения перенаправления по этому варианту следует поместить в свой конфигурационный файл Nginx следующий код:
return 301 https://example.com$request_uri;
Это перенаправление является постоянным (Redirect 301) и идеально подходит для постоянной миграции контента после смены домена.
Фрагмент блока конфигурационного файла выглядит так:
server {
server_name example.com www.example.com;
listen 80;
listen [::]:80;
return 301 https://$host$request_uri;
}
...
Причина замены example.com на $host будет понятна из следующего фрагмента.
В центре сертификации Let’s Encrypt можно легко получить и установить SSL/TLS сертификат совершенно бесплатно. Это позволит использовать на веб-сайте шифрованный трафик HTTPS. Получив сертификат следует правильно настроить редирект.
Фрагмент блока конфигурационного файла после этого будет выглядеть вот так:
...
if ($host = www.example.com) {
return 301 https://example.com$request_uri;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
...
Заключение
Я проверил множество вариантов redirect 301 на сервере с установленными Nginx и php-fpm. Ряд предлагаемых конфигураций слишком усложнены. Лишние переадресации нецелесообразны, а некоторые из них приводят к циклическому перенаправлению. Другие же приводят к дублированию адреса, ухудшая SEO.
Представленный здесь вариант я считаю оптимальным и пользуюсь им достаточно давно.