@q55434

Как сделать 301 редирект в nginx со всех доменов и поддоменов на один?

Доброго времени суток!

Возникла проблема, подскажите пожалуйста, как её решить.

Есть 2 домена: a.ru и b.ru

Необходимо через 301 редирект все запросы с a.ru www.a.ru https://www.a.ru b.ru www.b.ru https://b.ru https://www.b.ru перенаправить на https://a.ru и если запрос идет с параметром, то и его учитывать тоже, т.е. с www.a.ru/123 на https://a.ru/123 и т.п.

С подобной конфигурацией nginx:
server {
listen 80;
listen 443;
ssl on;  
ssl_certificate /fullchain.pem;
ssl_certificate_key /privkey.pem;
server_name a.ru www.a.ru b.ru www.b.ru;
return 301 https://a.ru$request_uri;# (rewrite ^/(.*)$ https://a.ru/$1 permanent;  - тоже пробовал, не помогло)
root /www/html;

Firefox "Firefox has detected that the server is redirecting the request for this address in a way that will never complete." и Chrome "redirected you too many times." не пускают на сайт.
  • Вопрос задан
  • 1128 просмотров
Решения вопроса 1
zoonman
@zoonman
⋆⋆⋆⋆⋆
Если хотите, чтобы ваш сервер отрабатывал очень быстро и без зацикливаний, вам необходимо создать отдельные группы для каждого из доменов.

server {
    server_name b.ru;
    return 301 https://a.ru$request_uri;
}

server {
    server_name www.b.ru;
    return 301 https://a.ru$request_uri;
}

server {
    server_name www.a.ru;
    return 301 https://a.ru$request_uri;
}

server {
    server_name a.ru;
    listen 80;
    return 301 https://a.ru$request_uri;
}

server {
    server_name a.ru;
    listen 443 ssl ;
    listen [::]:443 ssl  ipv6only=on;
    ssl on;
    # и так далее
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы