РЕДИРЕКТ С WWW НА БЕЗ WWW NGINX
Главная » Linux » РЕДИРЕКТ С WWW НА БЕЗ WWW NGINX
Опубликовано
По соображениям SEO, сайт должен иметь только один домен. Поддомен с www считается отдельным доменом, и если он доступен, это приводит к дублированию контента и возможному ухудшению позиций сайта в рейтингах поисковых систем. Поэтому обычно используется перенаправление с www-домена на не-www-домен.
Первоначально поддомен www использовался для обозначения того, что сервер является веб-сервером и размещает веб-сайт. В этом больше нет необходимости. В этой статье описывается, как перенаправить с www на не www с помощью Nginx.
Самый простой способ создать перенаправление в Nginx для домена www — это создать для него отдельный раздел сервера и перенаправлять оттуда. Например:
server {
server_name setiwik.ru;
return 301 $scheme://losst.ru$request_uri;
}
Если вы хотите работать с www и non-www в одном разделе сервера, вы можете использовать условное выражение и регулярное выражение. www\.(.*)$) {
set $need_redirect «1»;
}
if ($request_uri ~* «well-known») {
set $need_redirect «0»;
}
if ( $need_redirect ~ «1») {
return 301 https://$server_name$request_uri;
Теперь, если URL содержит известное слово, которое используется в запросе проверки домена для SSL-сертификата, перенаправления не будет. Сохраните настройки и перезапустите Nginx сервер:
nginx -s reload
Или:
sudo systemctl restart nginx.
Затем вы можете проверить, работает ли перенаправление с помощью curl:
РЕДИРЕКТ С WWW НА БЕЗ WWW NGINX
curl -I www.setiwik.ru
Будет возвращен код перенаправления, а поле location будет содержать URL, на который будет перенаправлен пользователь. Однако если вы попытаетесь зайти на URL LetsEncrypt, перенаправления не произойдет:
curl -I https://www. http://example-site.com$request_uri;
}
В современных версиях веб-сервера, согласно официальной документации в Nginx redirect нужно настраивать используя return с указанием кода HTTP ответа (301 или 302)
server {
listen 80;
server_name example.com;
return 301 http://$host$request_uri;
}
В примере приведен пример настройки переадресации все запросов к страницам одного сайта на страницы другого сайта.
server {
listen 80;
server_name www.example.com;
return 301 http://example.com$request_uri;
}
Nginx редирект на https
server {
listen 80;
server_name www. example.com;
return 301 https://example.com$request_uri;
}или
server {
listen 80;
server_name www.example.com example.com;
return 301 https://example.com$request_uri;
}В последнем случае редирект будет отрабатывать для www.example.com и example.com, все запросы будут направляться на имя без www, доступную по https.
Если переадресация нужна только для example.com без www, то www.example.com можно указать в качестве server_name в отдельной специально созданной секции конфигурационного файла
server {
listen 80;
server_name www.example.com;
…
}
Также часто возникает необходимость переадресовывать запросы ко всем доменам в конфигах на один, сделать это можно задав две секции server и директиву default_server, под которую будут попадать все имена сайтов кроме заданных непосредственно (example. com и www.example.com в примере).
server {
listen 80;
server_name example.com www.example.com;
…
}
server {
listen 80 default_server;
server_name _;
return 301 http://example.com$request_uri;
}
Если на сервере используется конфигурация Nginx + Apache, Nginx + Unicorn или подобная редирект всегда настраивается для того пакета, который первым обрабатывает запрос принимая его непосредственно от пользователя
netstat -nltp | grep 80
Для большинства конфигураций в выводе будет именно рассматриваемый веб-сервер — если это так, переадресацию нужно настраивать для него.
Categories: Nginx
Перенаправление без www на www или наоборот - Отзывы о продукте - Форум
Том (Том)
#1
Поскольку мы все хотим сделать наши сайты как можно более оптимизированными для SEO, я хотел бы знать, как я могу добиться перенаправления не-www на www-адреса моего домена.
Конечно, это подразумевает настройку пользовательских доменов в веб-потоке. Так как совсем недавно у меня была такая же ситуация на shopify, давайте посмотрим, как это делается в их админке:
966×297 28,4 КБ
Как видите, у меня настроены и добавлены shopify-url, а также два домена (один с www, другой без www). Я изменил запись A / CNAME своих доменов, чтобы они указывали на мой магазин shopify — аналогично тому, как я сделал бы это в веб-потоке.
Теперь есть функция с именем , установленная как первичная . Когда я нажму на это, откроется всплывающее окно.
968×429 41.3 КБ
Там же могу проверить Перенаправить весь трафик на этот домен .
Отныне все домены будут указывать на www-версию.Как я могу сделать это с помощью веб-потока? Я не хочу, чтобы оба домена индексировались Google (да, я знаю, что могу указать предпочтительный домен в инструментах аналитики/веб-мастера).
В случае, если я хочу использовать только домен www, будет ли следующее решение?
- удалить не-www из веб-потока
- перенаправить не-www на домен www (нашим хостинг-провайдером)
Кстати: не будет ли чекбокс вроде того, что в shopify, решением этой проблемы?
Брайант (Брайант Чоу)
#2
Привет, @Tom, мы рассмотрим возможность реализации «основного» домена для ваших личных доменов.
Daniel_Ace (Дэниел) #5
+1 Это нужная функция.
олло (Себастьян)
#6
Здравствуйте,
Как сказал Том, если мне нужно сделать свой сайт максимально оптимизированным для SEO, как лучше всего это сделать с точки зрения перенаправления версии без www и версии с да-www в веб-потоке? (учитывая, что нельзя сделать перенаправление, как показал Том.
Что посоветуете, чтобы индексировался только один из этих доменов и чтобы не дублировался контент?
Спасибо!
Том (Том)
#7
Проверьте кнопку публикации и настройки хостинга!
Кажется, они только что выпустили новую версию.
@brryant отлично выглядишь!
Изменить
Только что заметил объявление здесь: Новая функция: Управление публикацией и перенаправление домена - Объявления Webflow - Форум | Веб-поток3 лайков
(webflowexpert.com) в архиве
#8
Как перенаправить с www на без www с помощью Nginx
Если у вас есть веб-сайт или веб-приложение за доменом, ваши пользователи могут получить доступ к вашему веб-сайту по доменному имени и поддомену www .
Например, этот веб-сайт доступен через https://driesdeboosere.dev (без поддомена www) и https://www.driesdeboosere.dev (с поддоменом www ) .
Когда пользователь переходит на https://www.driesdeboosere.dev, этот пользователь будет перенаправлен на https://driesdeboosere.dev ( без www ).
Для этого на сервере Nginx вам необходимо сделать следующее:
Настроить DNS
Чтобы настроить это перенаправление,
www.driesdeboosere.dev
наdriesdeboosere.dev
или наоборот, у вас должна быть запись A для домена (driesdeboosere.dev) и запись A для поддомена (www.driesdeboosere.dev).
- Создайте запись A для своего доменного имени (например,
driesdeboosere.dev
) и установите IP-адрес на общедоступный IP-адрес вашего сервера Nginx (например,165.22.205.49
).- Затем добавьте еще одну запись A для своего поддомена (например,
www. driesdeboosere.dev
) и укажите тот же IP-адрес.Это должно выглядеть примерно так:
Теперь ваши серверы доступны для домена с www и без www, но нам все еще нужно настроить перенаправление. Это следующий шаг.
Настройка перенаправления Nginx
Мы можем сделать два перенаправления: 301 или 302. Узнайте о разнице между ними.
В нашем случае нам нужна постоянная переадресация 301, чтобы весь трафик через www.driesdeboosere.dev перенаправлялся на driesdeboosere.dev. Мы настроим новый блок сервера Nginx, который указывает на ваш исходный блок сервера.
- Войдите на свой сервер
- Введите следующую команду:
sudo nano /etc/nginx/conf.d/redirect.confВ зависимости от того, в каком направлении вы хотите перенаправить, используйте один из двух вариантов ниже.
Вариант 1. Перенаправление с www на домен без www
Если вы хотите перенаправить пользователей с домена с www на домен без www, вставьте в редактор следующую конфигурацию:
server { имя_сервера www. driesdeboosere.dev; вернуть 301 $схема://driesdeboosere.dev$request_uri; }Сохранить и выйти.
Чтобы изменения вступили в силу, перезапустите Nginx, введя следующую команду:
sudo systemctl restart nginxПроверьте перенаправление в браузере; вход на www.driesdeboosere.dev приведет к перенаправлению на driesdeboosere.dev.
Мы можем проверить это с помощью команды curl, введите в PowerShell следующее:
curl -I www.driesdeboosere.devВы должны получить ответ
301 Moved Permanently
, подобный этому:HTTP/1.1 301 Moved Permanently Сервер: nginx/1.14.0 (Ubuntu) Дата: Чт, 12 августа 2021 г., 13:04:32 по Гринвичу Тип содержимого: текст/html Длина контента: 194 Соединение: Keep-alive Расположение: https://driesdeboosere.dev/Вариант 2: перенаправить без www на www
Если вы хотите перенаправить пользователей с домена без www на www, вставьте в редакторе следующую конфигурацию:
server { имя_сервера driesdeboosere. dev; вернуть 301 $scheme://www.driesdeboosere.dev$request_uri; }Сохранить и выйти.
Чтобы изменения вступили в силу, перезапустите Nginx, введя следующую команду:
sudo systemctl restart nginxПроверьте перенаправление в браузере; вход на driesdeboosere.dev приведет к перенаправлению на www.driesdeboosere.dev.
Мы можем проверить это с помощью команды curl, введите в PowerShell следующее:
curl -I driesdeboosere.devВы должны получить ответ
301 Moved Permanently
, например:HTTP/1.1 301 Moved Permanently Сервер: nginx/1.14.0 (Ubuntu) Дата: Чт, 12 августа 2021 г., 13:04:32 по Гринвичу Тип содержимого: текст/html Длина контента: 194 Соединение: Keep-alive Местонахождение: https://www.driesdeboosere.dev/Вот и все! Ваше постоянное перенаправление Nginx теперь настроено правильно, и ваши пользователи смогут получить доступ к вашему веб-серверу через ваш домен без www и www.
Перенаправление 301 (постоянное)
Перенаправление 301 — это постоянное перенаправление.