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

Исключение Apache HSTS для некоторых виртуальных хостов

В разделе глобальной конфигурации для Apache 2.2.15 у меня есть следующее (для рекомендация)

<IfModule mod_headers.c>
Header add Strict-Transport-Security "max-age=15768000;includeSubDomains" env=HTTPS
</IfModule>

Я хотел бы добавить этот заголовок только тогда, когда запрос НЕ предназначен для определенного хоста (dev.host.com). Который директива я использую, чтобы сделать заголовок добавить возникают только когда не для конкретного хоста?

PS: Вторая часть этого вопроса была переехал.

  1. Если вы включаете только директиву IfModule в директиву VirtualHost для x.x.x.x: 443, тогда она будет применяться только к этому VirtualHost, а там только к протоколу https.

  2. Вы можете попробовать директиву

    <If "%{HTTP_HOST} = 'www.dev.domain.com'">
        <IfModule mod_headers.c>
            Header unset Strict-Transport-Security
            Header always set Strict-Transport-Security "max-age=0;includeSubDomains"
        </IfModule>
    </If>
    

В Apache 2.2 вы, вероятно, можете поиграть с чем-то вроде ниже.

  • Установите env для определения общего случая и исключения конкретного случая:

    SetEnvIf HTTPS do_work_on_headers    
    SetEnvIf Host "^www.myexcludedhostname.tld$" !do_work_on_headers
    
  • затем условно установить заголовки:

    <IfModule mod_headers.c>
        Header add Strict-Transport-Security "max-age=15768000;includeSubDomains" env=do_work_on_headers
    </IfModule>