Re: Как понимать термин URI в документации?
Vladislav
tvword на gmail.com
Вс Янв 10 15:37:27 MSK 2010
Vladislav пишет:
> 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
>
Т.е., согласно примеру получим - http://site.com/foo?param
где $request_uri = foo
*Игорь, я правильно понял?*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100110/44bccd80/attachment-0001.html>
Подробная информация о списке рассылки nginx-ru