ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

FastCGI, $query_string и PHP (Drupal)



Добрый день. Есть nginx 0.5.26, под ним через FastCGI бегает PHP (Drupal). Проблема, наверное, известная, и подобный вопрос не раз задавался, но решения я так и не нашел.

Вообщем, пользователь вводит в форму поиска строку, например, "пластиковые окна". Браузер отправляет запрос:
GET /search/node/пластиковые+окна HTTP/1.1

Этот запрос через реврайт преобразуется в следующий:
GET /index.php?q=search/node/пластиковые+окна HTTP/1.1

Однако, FactCGI-серверу query string передается заэскейпенный (%2B вместо +):
GET /index.php?q=search/node/пластиковые%2Bокна HTTP/1.1

Таким образом, "пластиковые окна" превращаются в "пластиковые+окна".

Вопрос: как получить незаэскейпенную $query_string в конфиге и передать ее FastCGI? Или как по-другому решить эту проблему?

Куски конфига:

# Реврайтинг

   if (!-e $request_filename) {
      rewrite ^/(.*)$ /index.php?q=$1 last;
      break;
   }

# PHP
  location ~ .php$ {
    fastcgi_pass   127.0.0.1:8888;
    fastcgi_index  index.php;

    fastcgi_param  SCRIPT_FILENAME  /var/www/xxxxxxxxx$fastcgi_script_name;
    fastcgi_param  QUERY_STRING     $query_string;
    fastcgi_param  REQUEST_URI      $request_uri;
    fastcgi_param  REQUEST_METHOD   $request_method;
    fastcgi_param  CONTENT_TYPE     $content_type;
    fastcgi_param  CONTENT_LENGTH   $content_length;
    fastcgi_param  REMOTE_USER      $remote_user;
    fastcgi_param  REMOTE_ADDR      $remote_addr;
    fastcgi_param  REMOTE_PORT      $remote_port;
  }

Михаил.


 




Copyright © Lexa Software, 1996-2009.