Re: SSI переменные $uri и $request_uri
Denis F. Latypoff
latypoff на yandex.ru
Пт Авг 26 04:34:54 UTC 2011
26.08.2011, 06:49, "Oleksandr V. Typlyns'kyi" <wangsamp at gmail.com>:
> Today Aug 26, 2011 at 04:52 Denis F. Latypoff wrote:
>
>>>> # cat included.html
>>>> <!--#echo var="uri"-->
>>>> <!--#echo var="request_uri"-->
>>>>
>>>> # wget -qO- "http://localhost/index.html" | less
>>>> /included.html
>>>> /index.html
>>>>
>>>> Вот хотелось бы, чтобы uri тоже был 'index.html', то есть адрес
>>>> родительского запроса. Или это фича? Или бага? ))
>>> $uri, эта переменная равна текущему URI в запросе, он может отличаться от первоначального, например, при внутренних редиректах или при использовании индексных файлов.
>> Точно, спасибо. Похоже, получить первоначальный запрос без аргументов не получится...
>
> Почему же? Достаточно его сохранить в другой переменной:
Опять костыль )) Нуда ладно.
> location / { ssi on; set $orig_uri $uri;}
> location = /included.html { ssi on; }
>
> cat included.html
> <!--#echo var="uri"-->
> <!--#echo var="request_uri"-->
> <!--#echo var="orig_uri"-->
>
> wget -qO- "http://localhost/index.html?a=1&b=2"
> /included.html
> /index.html?a=1&b=2
> /index.html
>
Я как раз тоже самое делал в самом SSI:
cat index.html
<!--#set var="orig_uri" value="$uri"-->
<!--#include file="included.html"-->
# cat included.html
<!--#echo var="uri"-->
<!--#echo var="request_uri"-->
<!--#echo var="orig_uri"-->
# wget -qO- "http://localhost/index.html?sdasd" | less
/included.html
/index.html?sdasd
/index.html
За идею с конфигом спасибо. Только я вот не знаю
теперь - переносить ли все это дело в конфиг...
> Важный момент - /included.html должен быть в другом location, а то иначе set перепишет значение из $uri подзапроса.
Похоже, этих граблей в моем варианте нет.
> Или если это мифический shared hosting со сферическими непредсказуемыми URI, то можно и в rewrite style:
> location / { ssi on; if ($orig_uri = "") {set $orig_uri $uri;} }
Сразу нет ))
--
br, Denis F. Latypoff.
Подробная информация о списке рассылки nginx-ru