необходимо создать регулярное выражение, соответствующее строке в URL-адресе, исключая конечную строку.

Я был бы признателен за помощь в создании правильного регулярного выражения для блока карты nginx. По сути, мне нужно сопоставить шаблон [обычно слово: например, курс] в URL-адресе, но URL-адрес не должен заканчиваться расширениями, такими как jpg, png, gif

, поэтому, пока он должен соответствовать:

/ course / history

он не должен совпадать:

  • /course/history.png
  • /course.jpg
  • /course/history/student/boy.png

Я просто не могу заставить ничего работать , кажется, я далек от этого

map $request_uri $redirect_uri_course {
~/course/+ !.(jpg|png|gif)$   http://www.example.com/courses;
}

Пожалуйста, помогите, спасибо

1
задан 23 May 2019 в 21:15
1 ответ

Вы можете использовать регулярное выражение с отрицательным просмотром назад .

Например:

~^/course/[^?]*(?<!\.(jpg|png|gif))([?]|$)

В качестве альтернативы, учитывая, что регулярные выражения оцениваются по порядку, вы можете использовать два оператора, с первым вычислением до нуля.

Например:

~\.(jpg|png|gif)([?]|$)    0;
~^/course/               /some/path;
1
ответ дан 3 December 2019 в 23:04

Теги

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