ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Переделать 302-ой в 301-ый редирект


  • To: nginx-ru@xxxxxxxxx
  • Subject: Переделать 302-ой в 301-ый редирект
  • From: Dmitriy Belousov <mysenderbox@xxxxxxxxx>
  • Date: Thu, 3 May 2012 03:15:16 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=FLAhAynD5QJAlCQi1Xmop3k1ba9QUsEUJJk6FdNrOVo=; b=hP+JN8gr9vDGyGGGxNG4DeM7M0i28RxmS0yRONkUDZ5PZfV+UlCdrQdeoV9Dp+2hPV SAPim7sigcir9K6WjaFPJeJc7WkQVj7FeEwIN2mQ1OuvagbRvEhKB3a1VjYefEXwSC7C mehm7ip9Mc3Ddg0DxwVf1pLR/qbKUNN353EJrpSr1CwcJ1CHnYjeh4+FPaxIrzSPMDrz eoFMTpcwPrcLSt9eexz2zJkxPl7Z6Umb0knODBliR0LAsJgkDdcXLK65PgWYzf2iGsR7 hElOj61zuyXLcIXwoLi5qLx2CHhaZ65/gC5p4Lku2snq2g88lhhsOkpKcNVZ8vQ2XSUL Zhnw==

Доброго всем.

Есть nginx, стоит фронтом перед apache/php. От бэкэнда приходи ответ с 302-ым редиректом, который мне крайне хотелось бы заменить на 301-ый. На уровне движка переделать можно, но очень, очень хотлось бы этого не делать.

Пробовал разными способами. Если обрабатывать uri через if регуляркой на предмет соответстветствия с тем, что где нужно подменять редирект, то теряется хэдер Location, вот один из многих опробованных мной вариантов.

if ($request_uri ~* ^.+(unread/|get_post)$) {
                rewrite  ^/(.*)$ $sent_http_location permanent;
                }

Я так понимаю, что мой proxy_pass тогда просто игнорируется, хотя делается if в одном с ним локейшене после него, и сразу идет попытка обработать if, откуда получается 301-ый в никуда, так как $sent_http_location отсутствует.

Еще был вариант использования if ($sent_http_location), но он вообще не работает, опять же по моим соображениям из-за того, что if не обрабатывает ответ, а только запрос.

Т.е. в любом случае задачу я вижу так: мне нужно получить "настоящий" ответ от бэкэнда, выдрать из него как минимум хедер Location, и отправить его c 301-ым редиректом клиенту вместо ответа бэкэнда.

Не подскажите, задача вообще решаема?
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.