Как перенаправить весь URL-адрес строки запроса в Nginx - PullRequest
0 голосов
/ 08 сентября 2018

Я хочу перенаправить весь URL-адрес, содержащий строку запроса (?) на URL-адрес перед строкой запроса в Nginx.

Пример:

example.com?asd to example.com

example.com /? Qwe до example.com /

example.com/post-one?pod to example.com/post-one

example.com / post-one /? sadh до example.com / post-one /

example.com/hi/there?kjg to example.com/hi/there

example.com / hi / there / buddy? jbdg до example.com / привет / там / приятель

example.com/hi/there/buddy/?asgasg to example.com/hi/there/buddy/

спасибо.

обновление: найдено решение:

if ($request_uri ~ ^/([^?]*)\?) {
   return 301 /$1; 
}

1 Ответ

0 голосов
/ 09 сентября 2018

Решение, которое вы добавили, является неэффективным, поскольку включает оценку оператора регулярного выражения для каждого запроса, за которым следует перезапись и повторная оценка вашего регулярного выражения для любых запросов, которые совпадают в первый раз.

Гораздо проще сделать это правильно. В Nginx переменная $args содержит строку запроса, поэтому, если вы просто пытаетесь отбросить запрос каждый раз, когда просто добавляете эту строку в свою конфигурацию:

set $args '';

Вот и все. Нет больше строк запроса.

...