Редирект без www на www: Как настроить переадресацию на домен БЕЗ «www»

РЕДИРЕКТ С 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:

curl -I www.setiwik.ru

РЕДИРЕКТ С WWW НА БЕЗ WWW NGINX

Будет возвращен код перенаправления, а поле 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, будет ли следующее решение?

  1. удалить не-www из веб-потока
  2. перенаправить не-www на домен www (нашим хостинг-провайдером)

Кстати: не будет ли чекбокс вроде того, что в shopify, решением этой проблемы?

Брайант (Брайант Чоу)

#2

Привет, @Tom, мы рассмотрим возможность реализации «основного» домена для ваших личных доменов.

Daniel_Ace (Дэниел)

#5

+1 Это нужная функция.

олло (Себастьян)

#6

Здравствуйте,

Как сказал Том, если мне нужно сделать свой сайт максимально оптимизированным для SEO, как лучше всего это сделать с точки зрения перенаправления версии без www и версии с да-www в веб-потоке? (учитывая, что нельзя сделать перенаправление, как показал Том.

Что посоветуете, чтобы индексировался только один из этих доменов и чтобы не дублировался контент?

Спасибо!

Том (Том)

#7

Проверьте кнопку публикации и настройки хостинга!

Кажется, они только что выпустили новую версию.

@brryant отлично выглядишь!

Изменить
Только что заметил объявление здесь: Новая функция: Управление публикацией и перенаправление домена - Объявления Webflow - Форум | Веб-поток

3 лайков

(webflowexpert.com) в архиве

14 февраля 2017 г., 5:33

#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 — это постоянное перенаправление.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *