FastCGI, $query_string и PHP (Drupal)
Igor Sysoev
is at rambler-co.ru
Fri Feb 1 17:56:47 MSK 2008
On Fri, Feb 01, 2008 at 06:40:14PM +0600, Михаил Лапшин wrote:
> Добрый день. Есть 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 QUERY_STRING $query_string;
+ fastcgi_param QUERY_STRING $request_uri;
> 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;
> }
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list