Соответствие локациям nginx, начинающимся с буквы i - PullRequest
0 голосов
/ 12 мая 2018

У меня проблема с блоками местоположения, начинающимися с "i".

Следующий блок местоположения не соответствует запросу "/" (и это ожидаемый результат)

location /h {
    return 302 /redirect-for-testing-purposes ;
}

но этот другой, начинающийся с "i", сопоставляется запросом "/"

location /i {
    return 302 /redirect-for-testing-purposes ;
}

Обратите внимание, что это происходит только с буквой "i", и вы можете проверить его с помощью следующих блоков местоположения:

Этот блок местоположения не будет сопоставлен с запросом "/"

location ~* ^/([a-h]|[j-z]) {
    return 302 /redirect-for-testing-purposes ;
}

пока это будет

location ~* ^/[a-z] {
    return 302 /redirect-for-testing-purposes ;
}

Что здесь происходит, что я не мог понять? Спасибо.

версия nginx: 1.14.0 и 1.12.1

1 Ответ

0 голосов
/ 13 мая 2018

i также является первой буквой index.html.

Когда вы обращаетесь к URI, например /, директива index внутренне перезапишет URI в /index.html.

После внутренней перезаписи nginx начнет другой поиск соответствующего блока location и найдет ваш блок location /i.

См. этот документ для получения дополнительной информации.

...