Назад | Перейти на главную страницу

Как я могу применить заголовок HSTS ко всем vhosts более 443 в Apache

Я хочу добавить заголовок HSTS в Apache ...

# HSTS / Header Strict Transport Security
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

... но у меня есть длинный список vhosts для разных, но связанных сайтов / подсайтов. Я бы предпочел не определять его в каждом из моих определений vhost, но я не знаю, как включить параметр в основной https.conf это относится ТОЛЬКО к 443 / https версии этих vhosts, так как они вызывают предупреждения в валидаторах, когда вы применяете HSTS к стандартному 80 / http сайт.

Я пробовал обернуть его <IfModule mod_ssl.c>...</IfModule> теги, но если я не ошибаюсь, это действительно просто вопрос Модуль SSL загружен? Я пробовал искать разными способами, но когда вы не знаете искомый термин, трудно разобрать все статические данные. Какие-либо предложения? Спасибо!

Вы можете сделать это с помощью <If> Директива и Выражения доступный; запрос связанный переменные:

  • REQUEST_SCHEME: Часть схемы URI запроса

    <If "%{REQUEST_SCHEME} == 'https'">
      Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    </If>
    
  • HTTPS: on если запрос использует https, off в противном случае

    <If "%{HTTPS} == 'on'">
      Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    </If>