Как правильно выполнить Nginx redirect 301 для SEO
Опубликовано admin — пн, 03/28/2022 — 13:58
Система
По написанию конфигурационного файла Nginx с redirect 301 существует много рекомендаций. Как создать правильный редирект, который не плодит дубли, ухулшающие SEO.
Содержание
- Что такое Nginx redirect 301
- Nginx redirect 301 с www на без www и с http на https
- Заключение
Что такое 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.
Представленный здесь вариант я считаю оптимальным и пользуюсь им достаточно давно.
Поделиться с друзьями
Redirect 301 с веб-ресурса «www» на сайт без учета «www» и обратно
Очень часто появляется необходимость в использовании редиректов. К наиболее распространенным ситуациям, в которых задействуется 301 Redirect можно отнести:
- случаи, когда страница сменила адрес, а пользователи осуществляют запрос на старую;
- исключение дублей страниц;
- переезд с одного сайта на другой со сменой доменного имени.
Самым верным решением в подобных ситуациях будет реализация редиректа во фронтэнде, посредством NGINX. В идеале рекомендуется отказаться от Appache и использования .htaccess в принципе, если есть желание существенно ускорить работу сайта в целом.
Однако в таком случае, при переходе на NGINX, мы сразу же сталкиваемся с проблемой реализации ранее создававшихся . http://www.site.com$requеst_uri ? pеrmanent;
}
sеrver {
listen 80;
sеrver_nаme www.sitе.com;
. . .
Редирект со включенным режимом ЧПУ
Это очень популярный способ, поскольку, смена адресов страниц происходит и в работающих проектах, а это чревато потерей определенного количества посетителей сайта. В поисковых системах все еще красуется старое приветствие, на веб-сайте – новое, что вводит пользователя в замешательство.
Этот способ перенаправления можно отнести к разряду непростых, поскольку здесь условие содержится в переменных запроса GET. Не совсем понятно, каким образом создавать Location по такому запросу
/dir/?ELЕMENT_ID=777 на /dir/777/.
Есть достаточно эффективный, хотя и не самый удобный, вариант, поскольку присутствие условия «if» в конфигурации NGINX считается не самым удачным решением априори. /cat/page/$ http://www.example.net/page2/ permanent;
Перенаправление 301 с передачей переменной /оbl/777/ на /оbl.php?obl_idx=777 по условию
lоcation /obl/ { rеwrite /оbl\/(.*)$ /оbl.php?obl_idx=$1; }
Вас также может заинтересовать:
- Передача почты между Exchange и Mdaemon
- Аренда Windows сервера – почему такая услуга популярна сегодня?
- Невероятно выгодная Аренда сервера VDS на UNIX сегодня доступна и Вам!
- Облачный хостинг или новая реальность
- О новых возможностях exchange server 2013
Возврат к списку
Nginx: что вызывает перенаправление 301?
Задавать вопрос
спросил
Изменено 3 года, 8 месяцев назад
Просмотрено 3к раз
Я до сих пор не знаю, почему моя веб-страница показывает
myapp. com перенаправлял вас слишком много раз.
Nginx используется только в качестве прокси для моего приложения каналов django, которое работает с daphne.
Nginx работает без ошибок.
myapp systemd[1]: запуск высокопроизводительного веб-сервера и обратного прокси-сервера...
Дафна работает на 127.0.0.1:8001
curl -I http://myapp.com/ завиток-я https://myapp.com/
возвращает
HTTP/1.1 301 Перемещено навсегда Сервер: nginx Дата: вторник, 05 марта 2019 г.11:53:39 по Гринвичу Тип содержимого: текст/html Длина контента: 178 Соединение: Keep-alive Адрес: https://myapp.com/ HTTP/1.1 301 перемещен навсегда Сервер: nginx/1.10.3 (Ubuntu) Дата: вторник, 05 марта 2019 г., 11:54:43 по Гринвичу Тип содержимого: текст/html Длина контента: 194 Адрес: https://myapp.com/ Соединение: Keep-alive
Кто-нибудь знает, что вызывает эту ошибку 301?
Конфигурационный файл Nginx
сервер { слушать 80; имя сервера myapp.com www. myapp.com; серверные токены отключены; вернуть 301 https://$servername$requesturi; } сервер { слушать 443 ssl; # под управлением Certbot имя_сервера myapp.com www.myapp.com; ssl_certificate /etc/letsencrypt/live/myapp.com/fullchain.pem; # под управлением Certbot ssl_certificate_key /etc/letsencrypt/live/myapp.com/privkey.pem; # под управлением Certbot включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot корень /home/me/myapp/src/myapp; location = /favicon.ico { access_log off; log_not_found выключен; } местоположение /статическое/ { корень /home/me/myapp/src/myapp; } местоположение /медиа/ { корень /home/me/myapp/src/myapp; } расположение / { try_files $uri/ @python_django; } местоположение @python_django { прокси_пароль http://127.0.0.1:8001; proxy_pass_request_headers включен; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Хост $http_host; proxy_set_header X-Forwarded-Proto $ схема; прокси_перенаправление выключено; } }
- nginx
- перенаправление
- http-status-code-301
- daphne
Я до сих пор не знаю, как это исправить полностью, но когда я убираю
, возвращаю $server_name 301 https:// запрос_ури;
и запустить curl -I -L http://www. myapp.com/
я получаю
HTTP/1.1 200 ОК Сервер: nginx Дата: вторник, 05 марта 2019 г., 13:33:42 по Гринвичу Тип содержимого: текст/html Длина содержимого: 612 Последнее изменение: Вт, 31 января 2017 г., 15:01:11 GMT Соединение: Keep-alive ETag: "5890a6b7-264" Допустимые диапазоны: байты
Но я не могу получить доступ к странице, потому что, очевидно, LetsEncrypt перенаправляет все http
на https
, поэтому я возвращаюсь на страницу с ошибкой 301!
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
nginx — Как установить 301 перенаправление нескольких URL-адресов в один URL-адрес?
Задавать вопросспросил
Изменено 1 год, 9 месяцев назад
Просмотрено 390 раз
Файл vhost
на нашем сервере NGINX обрабатывает переадресацию 301.
Наша текущая настройка заключается в том, что мы перенаправляем список URL-адресов на соответствующий URL-адрес
Например (страницы объектов на страницы утилит):
location /facility/main-1 { вернуть 301 https://$host/utility/main-1/; } расположение / объект / main-2 { вернуть 301 https://$host/utility/main-2/; }
Но наш веб-сайт запускает новую страницу с подстраницами под названием /services
Наша цель — перенаправить обе страницы под /facility и страницы под /utility от до /services
Есть ли такая конфигурация, как та, что я сделал ниже?
расположение /объект/основной-1, /утилита/основной-1/{ вернуть 301 https://$host/services/main-1/; } расположение / объект / main-2, / утилита / main-2 / { вернуть 301 https://$host/services/main-2/; }
Любая помощь приветствуется. Спасибо
- nginx
- перенаправление
1
расположение ~* ^/(средство|полезность)/main-1/{ вернуть 301 https://$host/services/main-1/; }
В разделе «Ваш виртуальный хост» сделайте следующую запись для apache/httpd.