nginx и кириллица в строке запроса (rewrite)

R
На сайте с 03.07.2006
Offline
223
7104

Добрый день,

nginx 7.67 + php-fpm

Ubuntu 10.10

Подскажите, как научить nginx переваривать кириллицу в строке запроса (GET)?

В частности запрос сервер получает через rewrite условие в собственном конфиге:

rewrite ^/kastingi_v_moskve_(.*) /index.php?action=castings&co=3159&ci=москва&p=$1 last;

выдаёт 404

без кириллицы работает.

Читал в доках, что надо установить кодировку в UTF-8

Но прописывание в

location / {

charset utf-8;

}

не помогло.

Если у вас есть опыт подобных манипуляций, поделитесь пожалуйста.

И ещё околотемный вопрос: у Апача можно перекинуть пользователя перманентным редиректом (302) на другой домен

Конструкция вида:

RewriteCond %{HTTP_HOST} ^server\.ru

RewriteRule ^(.*)$ http://www.server.ru/$1 [R=permanent,L]

То есть, что бы при заходе на server.ru переадресовывалось на www.server.ru

Как это условие может выглядеть для nginx?

Спасибо.

[umka]
На сайте с 25.05.2008
Offline
456
#1
Лог в помощь!
[Удален]
#2
rengen:

И ещё околотемный вопрос: у Апача можно перекинуть пользователя перманентным редиректом (302) на другой домен
Конструкция вида:
RewriteCond %{HTTP_HOST} ^server\.ru
RewriteRule ^(.*)$ http://www.server.ru/$1 [R=permanent,L]

То есть, что бы при заходе на server.ru переадресовывалось на www.server.ru
Как это условие может выглядеть для nginx?

Спасибо.

if ($host = server.ru)

{

rewrite ^/(.*)$ http://www.server.ru/$1 permanent;

}

asobakin добавил 30.03.2011 в 22:56

перманентным редиректом (302)

Перманент - это вообще 301.

302 - это просто редирект. (меняете permanent на redirect)

R
На сайте с 03.07.2006
Offline
223
#3
'[umka:
;8747215']Не-ASCII символы нужно преобразовывать.
http://www.google.ru/search?client=safari&rls=en&q=escape+url&ie=UTF-8&oe=UTF-8&redir_esc=&ei=xmWTTZzbAZCTswbrsYzQBg

Да, спасибо, разобрался

Перманент - это вообще 301.
302 - это просто редирект. (меняете permanent на redirect)

Все верно, нужен перманентный 301, опечатался в первом посте.

Спасибо, работает.

iHead
На сайте с 25.04.2008
Offline
137
#4

ИМХО редирект лучше так:

server {
listen ...;
server_name test.ru;
access_log off;
rewrite . http://www.test.ru$uri permanent;
}

т.е. отдельный вирт хост и реврайт чуть по-другому

Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий