savostin
@savostin
Еще один программист

Как в nginx rewrite НЕ пробрасывать $args?

Тут внезапно столкнулся с проблемой, что такого вида rewrite:
rewrite ^/([0-9]+)/$ /index.php?id=$1 last;
При запросе вида /1234/?id=4321
на самом деле в $_REQUEST['id'] передаёт 4321, а не 1234.
Более того в такой rewrite
rewrite ^/some/([0-9]+)/$ /index.php?secret=abc&id=$1 last;

запрос /some/1234/?secret=bcd в secret передается bcd, что уже совсем не ожидаемо...

Можно как-то заставить Nginx игнорировать (не передавать ниже) $args в этом случае?
  • Вопрос задан
  • 26 просмотров
Решения вопроса 1
@dodo512
nginx.org/ru/docs/http/ngx_http_rewrite_module.htm...
Если в строке замены указаны новые аргументы запроса, то предыдущие аргументы запроса добавляются после них. Если такое поведение нежелательно, можно отказаться от этого добавления, указав в конце строки замены знак вопроса

rewrite ^/([0-9]+)/$ /index.php?id=$1? last;
rewrite ^/some/([0-9]+)/$ /index.php?secret=abc&id=$1? last;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы