передача QUERY_STRING при обработке error_page 404

Igor Sysoev is at rambler-co.ru
Wed Aug 24 21:37:55 MSD 2005


On Wed, 24 Aug 2005, Andrei Nigmatulin wrote:

> On Wednesday 24 August 2005 19:32, Igor Sysoev wrote:
>
>>> Хочется обрабатывать 404 ошибки скриптом, но при этом в скрипт почему-то
>>> не передается QUERY_STRING.
>>>
>>> Как можно сделать чтобы передавалась ?
>>
>> После error_page $query_string обнуляется. Можно так:
>>
>>      server {
>>          set  $original_query_string  $query_string;
>>
>>          ...
>>
>>          location ^~ /404.phtml {
>>              ...
>>              fastcgi_param  QUERY_STRING   $original_query_string;
>>              ...
>
> Так все равно не передается. nginx версии 0.1.42. Что я делаю
> неправильно ? ;-)

Я ошибся: после внутреннего редиректа с помощью error_page опять
выполяняются все директивы ngx_http_rewrite_module на уровне сервера
и $original_query_string становится равной пустой $query_string.
Нужно вынести set из сервера во все location, где нужно сохранить
$query_string:

       server {

           location  / {
               set  $original_query_string  $query_string;
               ...
           }

           location = /404.phtml {
               ...

Кстати, "location ^~ /404.phtml" лучше заменить на "location = /404.phtml".


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list