Обработка nginx URL с пробелами

SN
На сайте с 04.07.2013
Offline
84
1215

Сайт на VDS: CentOS, nginx, PHP.

На сайте есть такая ссылка:

http://www.site.ru/%D0%91%D1%80%D1%8E%D1%81%20%D0%9B%D0%B8

Мне на сервере нужно преобразовать этот адрес в следующий вид:

http://www.site.ru/index.php?title=%D0%91%D1%80%D1%8E%D1%81%20%D0%9B%D0%B8

или

http://www.site.ru/index.php?title=Брюс Ли

Для этого я прописал в nginx.conf следующее правило:

rewrite ^/([а-пр-яa-zA-Z0-9_- ]+)/$ /index.php?title=$1;

Но это правило не работает. Возможно из за того, что на сервере адрес автоматически декодируется и не может обработать пробел.

Я пробовал прописать правило по разному: экранировал пробел, записывал его как \%20 или как "плюс", или \s - ничего не выходит.

Подскажите, как научить nginx обрабатывать пробел?

Или как отключить в nginx автоматическое декодирование (я могу декодировать строку средствами PHP).

Или может быть можно как то на стороне nginx перед реврайтом заменить все пробелы на, допустим, "плюс", а потом я в PHP его обратно преобразую.

Спасибо!

adel92
На сайте с 04.01.2012
Offline
334
#1

Более правильно сменить урл и никогда больше не делать урлы с пробелами.

Вас и поисковики полюбят больше.

Отправлено с моего iPhone используя Tapatalk

NVMe VDS (https://well-web.net/nvme-vps) с поддержкой 24/7 - от 545 руб.! Безлимитный хостинг (https://well-web.net/ssd-hosting) - от 129 руб.! Домен в подарок! Перенос бесплатно! Заказывайте сейчас, и получите скидку 50%! Заходи! (https://well-web.net/limited-offers)
SN
На сайте с 04.07.2013
Offline
84
#2

Почему? Что в этом плохого? Адресная строка смотрится более естественно и читабельнее. Кстати проблема решена. У меня не получалось потому что я не тот файл редактировал. По глупости короче.

Отправлено с моего SM-T231 через Tapatalk

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