2013-09-04 3 views
7

Я пытаюсь соответствовать /category/anything, за исключением /category/paid в nginx.lookahead regex in nginx location

У меня есть следующее регулярное выражение, но оно не работает. Google сообщает мне, что я могу использовать lookahead в nginx. Я делаю что-то неправильно?

location ^/category(?!/paid)/ { 

} 

ответ

5

Вам либо нужна косая черта перед ним, либо сбежавшая косая черта.

location ~ (category/(?!paid)) { .. } 
location ~ (category\/(?!paid)) { .. } 
+0

Это именно то, что я искал! Благодаря! еще один вопрос ... выглядит как мое регулярное выражение, не соответствует/category/paid-test. Я добавил $ в конце, но он все еще не соответствует. Есть ли у вас какие-либо идеи? – Moon

+1

Возможно, что-то вроде 'category/(?: paid (? = -) | (?! Paid))' – hwnd

+1

Я не понимаю, в чем разница между '^/category (?!/Paid) /' и '(category/(?! paid)) 'оба должны быть эквивалентными и работать для примера (match/category/anything, except/category/paid). Что мне там не хватает? – Freefri