Задать вопрос
@DnDwarf

Редирект в Nginx любых запросов и ссылок на сайт на главную страницу?

UPDATE: Забыл добавить что по location / происходит proxy_pass на apache, поэтому решение представленное ниже скорее всего не взлетит.

Добрый день, подскажите пожалуйста, есть сайт example.com
Вот необходимо, чтобы любые запросы к нему редиректились на главную страницу сайта, и не важно какого вида запрос:

example.com/blabla.php, example.com/blabla.html, example.com/blabla.pdf,
example.com/blabla и так далее.

Стандартные php, html, htm ссылки можно редиректить по расширению ( либо по универсальной маске "любое имя -точка -любое расширение"):

location ~* \.(html|htm|php)$ {
return 301 http://example.com;
}
Но что делать с ссылками вида example.com/blabla

Заранее спасибо за помощь.
  • Вопрос задан
  • 5201 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@DnDwarf Автор вопроса
location = / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}

location / {
rewrite ^ / permanent;
}

Вот так все заработало, спасибо! )
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@luxter
Вот такой вариант ещё:

location ~* (?<=\/).* {
        return 301 /;
}

location = / {
        proxy_pass http://127.0.0.1:8887/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header HTTPS YES;
        proxy_connect_timeout 120;
        proxy_send_timeout 120;
        proxy_read_timeout 180;
}


rewrite работает, но крайне излишний здесь. можно указать регулярку для location, в которой будет 301 редирект на главную (корень /), а для главной указать location со знаком равно - в таком nginx прекращает все дальнейшие поиски при совпадении и позволяет избежать циклических редиректов (too many redirects), если таковые возникают.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы