LINUX.ORG.RU
решено ФорумAdmin

Nginx - если rewrite для сабдомена возвращает 404, вернуть другую страницу.

 ,


0

1

У меня есть rewrite для старых неиспользуемых поддоменов, и 90% URL существуют как на корневом домне, так и на субдомене, но некоторые URL-адреса уникальны для поддоменов.

Как мне сделать условие?

если поддомен соответсвует шаблону то направляем на основной домен
если это перенаправление вернуло 404 вернуть пользовательскую страницу 

Это так, набросок, location в условии разместить так нельзя, я знаю.

if ($host ~* (sub1|sub2|sub3)\.mysite\.loc) {
  rewrite ^(.+)$ http://mysite.loc$1 permanent;
  location / {
    error_page 404 =301 http://mysite.loc/lost-sub;
  }
}

P.S. 404 отдельно обрабатывает приложение на своей стороне.

Решение

Элегантного решения не нашел, сделал так:

if ($host ~* (sub1|sub2|sub3)\.mysite\.loc) {
  rewrite ^(.+)$ http://mysite.loc$1 permanent;

}

location / {
  if ($request_uri ~ ^.*(pepyaki|pyani|zhirchik).*) {
    return 301 http://mysite.loc/custom;
  }
}

где ^.*(pepyaki|pyani|zhirchik).* - это проблемные вхождения взятые из лога



Последнее исправление: WoozyMasta (всего исправлений: 1)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.