Nginx динамические перенаправления c URL-адреса одного пути к другому - PullRequest
1 голос
/ 17 марта 2020

Я хочу проверить, присутствует ли параметр в URL в nginx, а затем переписать. Как я могу это сделать?

Цвет является динамическим c в URL-адресах

Например,

  1. Если URL-адрес http://website.com/lunch-box/xxxxxabc, то перенаправить пользователь http://website.com/lunch-box/.

  2. Если URL-адрес http://website.com/lunch-box/xxxxxabc/ABCD123, нет необходимости перенаправлять. Нужно загрузить как есть.

Я хочу перенаправить, если URL совпадает. и xxxxxabc является динамическим c текстом.

nginx version: nginx/1.16.1

Ответы [ 2 ]

0 голосов
/ 29 марта 2020
server {
    # ....

    rewrite ^/(lunch-box)/([\w\d]+)/?$ /$1/ last;

    # ....
}

Это должно работать ... logi c:

, если http://website.com/lunch-box/xxewwwdewsvsd или http://website.com/lunch-box/xx353f33
перенаправление на http://website.com/lunch-box/

если http://website.com/lunch-box/xxxxxabc/ABCD123 ничего не делать.

0 голосов
/ 24 марта 2020
# rewrite direct children of /lunch-box but not grandchildren+
rewrite  ^(/lunch-box/)[^/]+/?$  $1  last;

Прогулка по регулярному выражению ^(/lunch-box/)[^/]+/?$

  • ^ соответствует началу строки (rewrite правила соответствуют пути, а не полному URI)
  • (/lunch-box/) соответствует буквенному тексту /lunch-box/ и сохраняет его для $1
  • [^/]+ соответствует одному или нескольким символам, не являющимся прямым sla * sh
  • /? соответствует нулю или одному прямому слэ sh
  • $ соответствует концу строки

Это удаляет путь, пройденный нами сохраняется как $1, но только если этот путь является прямым потомком.

...