FilimoniC
@FilimoniC

nginx вопрос по regexp

Прошу помощи.
Задача:
При запросе файла http: //serv/*.pgp выдавалось содержимое key.pgp,
но не при запросе http: //serv/something/*.pgp
(вместо * — любой набор [a-zA-Z0-9\.] (альфанумерик и точка)

location ~* /[a-zA-Z0-9\.]+\.(pgp|gpg|key)$ {

root /www/http/_global;
rewrite $ /key.pgp break;
}

location = /key.pgp {
root /www/http/_global;
}

не работает второе условие (запрос http: //serv/something/key.php отдает файл)
  • Вопрос задан
  • 4046 просмотров
Решения вопроса 1
VBart
@VBart
Во-первых /[a-zA-Z0-9\.]+\.(pgp|gpg|key)$ будет соответствовать любому URI оканчивающемуся на /*.pgp (в том числе и /something/*.pgp), вы сами не привязали регулярку к началу "^".

Во-вторых, так уже прямо вам реврайт нужен?

location ~* ^/[a-z0-9\.]+\.(pgp|gpg|key)$ {
    try_files /www/http/_global/key.pgp =404;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@sergeyvolobuev
вот тут хорошо описаны приоритеты локейшенов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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