Рейтинг:0

nginx: блокировка местоположения для всех URI без расширения

флаг cn

Я знаю, как обрабатывать URI, соответствующие определенному шаблону.

Пример

Следующая конфигурация добавит http-заголовок Cache-Control ко всем файлам, оканчивающимся на .css или .js:

расположение ~* \.(css|js)$ {
  add_header Cache-Control "public, max-age=31536000, неизменяемый" всегда;
}

Вопрос

Как мне обработать все URI без расширения?

Что-то вроде www.domain.tld/моя-статья.

(Я использую nginx в качестве обратного прокси и добавляю расширение .html в .htaccess.)

Richard Smith avatar
флаг jp
Таким образом, последний элемент пути не содержит `.`, например: `location ~ /[^./]+$`
Рейтинг:2
флаг us

Обычный способ:

место расположения / {
    # Все остальное
}

расположение ~* \.(?:css|js)$ {
    add_header Cache-Control "public, max-age=31536000, неизменяемый" всегда;
}

Документация по директиве местоположения nginx подробно объясняет, как nginx оценивает различные место расположения блоки.

Sr. Schneider avatar
флаг cn
В приведенном выше примере `\.(?:css|js)$` совпадает с `\.(css|js)$`?
флаг us
Знак `?:` говорит обработчику регулярных выражений не захватывать часть в переменную. Это делает выражение немного быстрее.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.