Проблема перезаписи параметров Nginx

Как удалить множественную косую черту из URL-адреса http://myserver.com//data/app?foo1=bar1&foo2=bar2 через правило перезаписи в nginx?

Я пытаюсь переписать регулярное выражение, но не могу сделать это успешно с полной строкой запроса, то есть с параметрами foo1 и foo2 в перенаправлении.


person Reefaq    schedule 03.08.2017    source источник
comment
Откуда //? Директива rewrite работает с нормализованным URI и не будет видеть встроенные // или ? или строку запроса.   -  person Richard Smith    schedule 03.08.2017
comment
один из наших клиентов отправляет такой запрос. Мы не можем сделать исправление на стороне клиента по каким-то странным причинам. Поэтому мы пытаемся исправить это на стороне nginx, чтобы этот запрос начал работать. JFYI, мы отключили merge_slashes и вручную нормализуем URL-адрес, переписав URL-адрес, поскольку nginx каким-то образом не нормализует URL-адрес (с включенным merge_slashes по умолчанию)   -  person Reefaq    schedule 03.08.2017
comment
Значение $uri должно быть нормализовано, а значение $request_uri — нет. Я видел проблемы, когда люди использовали $request_uri (например, в proxy_pass), что мешало нормализации.   -  person Richard Smith    schedule 03.08.2017


Ответы (1)


Вы можете попробовать следующее правило:

rewrite ^\/\/data/app/(.*)  /data/app/$1  last;
person SAM    schedule 07.08.2017