Re: Как понимать термин URI в документации?

Vladislav tvword на gmail.com
Вс Янв 10 15:30:55 MSK 2010


Vladislav пишет:
> Sergey Shepelev пишет:
>>> rewrite ^ http://www.mydomain.nl$request_uri permanent;
>>>
>>>
>>> А чем равно ^ в данном случае, если запрос http://www.site.com/foo?param
>>> ???
>>>
>>>     
>>
>> Почитайте какое-нибудь введение в регекспы.
>>
>> ^ это начало строки.
>>   
> Балиннн, я знаю, что это начало строки (или ее конец, как сказал 
> Игорь), не суть важно. Важно, что это строка целиком.
> Знаю и что такое регулряные выражения.
>
> Я спрашиваю в контексте определения, что такое URI в документации nginx!
>
> Если в запросе http://www.site.com/foo?param, URI - это *foo*. То 
> тогда *^ = foo*
> Тогда что на что на что перезаписывается (делается rewrite) в 
> выражении  http://mydomain.nl$request_uri?
> Вот в чем вопрос?
>
> Игорь написал следующее, но я че-то не могу до конца осознать -
>
> Цитата:
>
>     Если в строке замены указаны аргументы, то предыдущие аргументы запроса
>     добавляются после них. Можно отказаться от этого добавления, указав в конце
>     строки замены знак вопроса:
>
>             rewrite  ^/users/(.*)$  /show?user=$1?  last;
>
> Попробую еще раз.
>
> Делается запрос http://www.site.com/foo?param
> Надо сделать rewrite на  http://site.com/foo?param
>
> Пишем правило:
> rewrite ^  http://site.com/$request_uri? permanent;
>
> Здесь ^ = foo, которое перезапиывается на 
>
> http://site.com/$request_uri?
>
> в конце выражения стоит знак вопроса, значит 
> предыдущие аргументы запроса *не* добавляются после них. 
>
> Не понятно что не добавляется после чего.
>
> В итоге получаем, что foo перезаписывается в 
> http://site.com/$request_uri?, а результирующая строка принимает вид
>
> http://www.site.com/http://site.com/$request_uri.
>
> Извините, но я здесь ничего не понял. 
>
> Если кто может, расскажите подробно в чем фокус. 
>   
Кажется, до меня начинает доходить.

Если в конце стоит знак вопроса (http://site.com/$request_uri?), то 
предыдущие аргументы запроса (предыдущие до foo), а именно 
http://www.site.com/
не добавляются в результирующую строку.

Если бы они (предыдущие аргументы запроса) добавлялись, мы имели бы -

http://www.site.com/http://site.com/$request_uri?param 
(вверху, в предыдущем сообщении, не дописал ?param)

Поскольку они не добавляются, то на выходе получаем - 

http://site.com/$request_uri?param

*Игорь, я правильно понял?*



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100110/e7f39cd6/attachment.html>


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