Re: $request uri и anchors

Валентин Бартенев ne at vbart.ru
Tue Oct 30 21:46:18 UTC 2012


On Wednesday 31 October 2012 00:32:22 madad wrote:
> Добрый день.
> 
> Есть задача сделать редирект по полному совпадению URI, в котором
> содержится anchor. Вот такой:
> 
> 
> https://www.domain.com/#register?lead_type=business_trial&lead_source=websi
> te&gtest=false
> 
> Сделал следующее:
>         location / {
>             if ($request_uri =
> /#register?lead_type=business_trial&lead_source=website&gtest=false) {
>                 rewrite ^
> "http://www.domain.com/register/business_trial/?lead_source=website";
>                 break;
>             }
>             ..
>          }
> 
> Включил debug, захожу на
> https://www.domain.com/#register?lead_type=business_trial&lead_source=websi
> te&gtest=false - не работает.
> В логи пишет что $args пустой:
> 
> 2012/10/30 20:07:15 [debug] 16144#0: *1 http args: ""
> 
> Как только убираю #register из запроса и из условия сразу все работает как
> нужно.
> То есть:
>    URL
> https://www.domain.com/?lead_type=business_trial&lead_source=website&gtest=
> false Условие  if ($request_uri =
> /?lead_type=business_trial&lead_source=website&gtest=false)
>    Лог 2012/10/30 20:11:03 [debug] 16182#0: *1 http args:
> "lead_type=business_trial&lead_source=website&gtest=false"
> 
> К сожалению нужно матчить URL именно с anchor.
> 
> PS. nginx версии 1.2.3
> 

"#" и всё что после - называется "fragment identifier" [1], служит для навигации 
по документу и обычно на сервер браузерами не отправляется.

 [1] http://tools.ietf.org/html/rfc3986#section-3.5
--
Валентин Бартенев
http://nginx.com/support.html
http://nginx.org/en/donation.html


Подробная информация о списке рассылки nginx-ru