FastCGI, $query_string и PHP (Drupal)

Михаил Лапшин sotakone at sotakone.com
Fri Feb 1 15:40:14 MSK 2008


Добрый день. Есть 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;
  }

Михаил.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20080201/465c79e3/attachment.html>


More information about the nginx-ru mailing list