某些虚拟主机的 Apache HSTS 异常

某些虚拟主机的 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

  1. 如果您仅在 xxxx:443 的 VirtualHost 指令中包含 IfModule 指令,那么它将仅适用于该 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>
    

答案2

在 Apache 2.2 中您可能可以使用类似下面的内容。

  • 设置环境来识别一般情况并排除特定情况:

    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>
    

相关内容