Я был бы признателен за помощь в создании правильного регулярного выражения для блока карты 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;
}
Пожалуйста, помогите, спасибо
Вы можете использовать регулярное выражение с отрицательным просмотром назад .
Например:
~^/course/[^?]*(?<!\.(jpg|png|gif))([?]|$)
В качестве альтернативы, учитывая, что регулярные выражения оцениваются по порядку, вы можете использовать два оператора, с первым вычислением до нуля.
Например:
~\.(jpg|png|gif)([?]|$) 0;
~^/course/ /some/path;