Задать вопрос
Vovanys
@Vovanys

Как правильно оформить регулярку в nginx?

При переезде на другую CMS нужно изменить URL из вида
site/video.php?id=123
на
/video/player/123

Пробовал такой вариант и другие, но все время получаю линк вида /video/player/?id=123

location =/video.php {
rewrite (\d+) /video/player/$1 permanent;
}

Как сделать правильно? Подскажите плиз
Спасибо
  • Вопрос задан
  • 277 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
SergeyRodyushkin
@SergeyRodyushkin
.NET Developer
Уточните, у вас раньше был URL /video.php?id=123, а в новой CMS /video/player/123, и вам нужно сделать перенаправление со старого на новый?
Тогда попробуйте
location = /video.php {
       rewrite ^(.*)$ "/video/player/$arg_id?" permanent;
}

Опционально можно добавить проверку, и выполнять переадресацию, только если $arg_id передан. В текущем виде он просто отправит на /video/player.

Если убрать '?' после $arg_id, параметры будут сохранены, и получится /video/player/123?id=123.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Уберите = в location, а когда уберёте - идите читать что оно означало, а то у вас вся регулярка кривая : nginx.org/en/docs/http/ngx_http_core_module.html#l...
И в тех же доках прочитайте про rewrite module
Ответ написан
Комментировать
@ShamblerR
ну я бы вообще это сделал не через редирект а через обычный локейшен. nginx этов вам не apache тут все можно сделать проще.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы