Сделать редирект с www.subdomain.site.ru на subdomain.site.ru

12
SateClub
На сайте с 25.05.2010
Offline
81
1145

Добрый день.

Не могу победить проблему с редиректами.

есть сайт - site.ru который крутится на nginx

у сайта есть поддомены и их много. Например subdomain.site.ru

Надо сделать на основном сайте и на поддоменах редирект с www на без www.

В конфиге сайта в /etc/nginx/sites-available/site прописана примерно такая структура

server {
listen 80;
server_name www.site.ru;
return 301 http://site.ru$request_uri;
}

server {
listen 80;
server_name www.subdomain.site.ru;
return 301 http://subdomain.site.ru$request_uri;
}

server {
listen 80;
server_name site.ru *.site.ru;

.........
}

Так вот, при таком конфиге получаю работоспособный редирект по основному сайту, и неработоспособный при редиректе с поддомена. Уже какой день бьюсь, ничего не помогает.

буду рад любой помощи.

Вечно прошу помощи )
baas
На сайте с 17.09.2012
Offline
121
#1
SateClub:
Добрый день.

Не могу победить проблему с редиректами.

есть сайт - site.ru который крутится на nginx
у сайта есть поддомены и их много. Например subdomain.site.ru

Надо сделать на основном сайте и на поддоменах редирект с www на без www.

В конфиге сайта в /etc/nginx/sites-available/site прописана примерно такая структура



Так вот, при таком конфиге получаю работоспособный редирект по основному сайту, и неработоспособный при редиректе с поддомена. Уже какой день бьюсь, ничего не помогает.

буду рад любой помощи.

А так?

    server_name "~^www\.(.*)$";
return 301 $scheme://$1$request_uri;
Настройка BSD систем. (https://www.fryaha.ru) Знание сила, незнание Рабочая сила!
SateClub
На сайте с 25.05.2010
Offline
81
#2
baas:
А так?
    server_name "~^www\.(.*)$";

return 301 $scheme://$1$request_uri;

К сожалению так тоже не работает. Пишет:

Не удается получить доступ к сайту

Не удалось найти IP-адрес сервера www.subdomain.site.ru.

Выполните поиск по запросу subdomain site ru в Google

ERR_NAME_NOT_RESOLVED

S
На сайте с 30.09.2016
Offline
459
#3
SateClub:
Не удалось найти IP-адрес сервера www.subdomain.site.ru.

А и при чём тогда редирект? 😕

Записи DNS правильные?

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
baas
На сайте с 17.09.2012
Offline
121
#4
SateClub:
К сожалению так тоже не работает. Пишет:

Не удается получить доступ к сайту
Не удалось найти IP-адрес сервера www.subdomain.site.ru.
Выполните поиск по запросу subdomain site ru в Google
ERR_NAME_NOT_RESOLVED

Хмм, без редиректа домен www.subdomain.site.ru работает?

SateClub
На сайте с 25.05.2010
Offline
81
#5
baas:
Хмм, без редиректа домен www.subdomain.site.ru работает?

Точно, не работает.

Хм, тогда вопрос как прописать DNS. У меня панель mnogodomenov, там в разделе управления DNS зоной есть возможность добавить поддомен, где я собственно и добавил subdomain, но не совсем понимаю как добавить такой же поддомен но с www.

Там есть 3 поля:

https://yadi.sk/i/6h2BcwfTkoas3g - скриншот

Добавил в первое поле

www.subdomain

Ну и в поле с IP, добавил IP

но хост все равно не доступен и при попытке пинга www.subdomain.site.ru ругается на недоступность хоста

S
На сайте с 30.09.2016
Offline
459
#6
SateClub:
но хост все равно не доступен и при попытке пинга www.subdomain.site.ru ругается на недоступность хоста

Не всё так быстро. Ждите, пока записи в сети обновятся. Это несколько часов.

SateClub
На сайте с 25.05.2010
Offline
81
#7
Sitealert:
Не всё так быстро. Ждите, пока записи в сети обновятся. Это несколько часов.

Да, DNS обновились и теперь сайт доступен по адресу www.subdomain.site.ru теперь не срабатывает редирект. Сделал через регулярку, как предложили выше, но не работает.

baas
На сайте с 17.09.2012
Offline
121
#8
SateClub:
Да, DNS обновились и теперь сайт доступен по адресу www.subdomain.site.ru теперь не срабатывает редирект. Сделал через регулярку, как предложили выше, но не работает.

Странно а что за ошибка выходит?

if ($host ~* www\.(.*)) {
set $host_www $1;
rewrite ^(.*)$ http://$host_www$1 permanent;
}

А так?

Либо такой попробовать.

server_name "~^www\.(.*)$";
rewrite ^ http://$host$request_uri permanent;

Если не получается, то показывайте полный конфиг nginx.conf и виртал хоста куда добавляете редирект.

SateClub
На сайте с 25.05.2010
Offline
81
#9
baas:
Странно а что за ошибка выходит?
if ($host ~* www\.(.*)) {

set $host_www $1;
rewrite ^(.*)$ http://$host_www$1 permanent;
}

А так?
Либо такой попробовать.

Если не получается, то показывайте полный конфиг nginx.conf и виртал хоста куда добавляете редирект.

Оба способа не сработали.

Появляется ошибка 404, потому что роутер не может разобрать путь с www по хосту и генерирую 404 ошибку. Движок flask, сайт самописный.

Полный листинг конфига:


server {
listen 80;
server_name www.site.ru;
return 301 http://site.ru$request_uri;
}

server {
listen 80;
server_name "~^www\.(.*)$";
rewrite ^ http://$host$request_uri permanent;
}

server {
listen 80;
server_name site.ru *.site.ru;

location ~* \.(eot|ttf|woff|woff2)$ {
add_header Access-Control-Allow-Origin *;
}

location / {
include uwsgi_params;
uwsgi_pass unix:///home/user/site/site.sock;
}

location /static {
alias /home/user/site/static;
}
}
baas
На сайте с 17.09.2012
Offline
121
#10

Уберите верхний редирект.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий