0

需要像这样添加到 .htaccess 条件:

if (page == '/admin') {
    Header add Test "test"
}

这不起作用:

<IfModule mod_headers.c>
    <If "%{REQUEST_URI} == '/'">
        Header add Test "test"
    </If>
</IfModule>

但这适用于所有页面(逻辑上):

<IfModule mod_headers.c>
    Header add Test "test"
</IfModule>

我知道 env=[!]varname,但不知道在我的情况下如何使用..

我会很高兴得到任何帮助!

4

1 回答 1

0

该指令

<IfModule mod_headers.c>
    <If "%{REQUEST_URI} == '/admin'">
        Header add Test test
    </If>
</IfModule>

是正确的,并且如果请求未在其过程中被修改,则将添加标头。


例如,如果您有

<IfModule mod_headers.c>
    <If "%{REQUEST_URI} == '/admin'">
        Header add Test test
    </If>
</IfModule>

RewriteEngine on
RewriteRule ^admin$ /index.php [L]

不会设置标头,因为请求已被修改并将被识别为/index.php。要在响应上设置标头,您必须将其更改为

<IfModule mod_headers.c>
    <If "%{REQUEST_URI} == '/index.php'">
        Header add Test test
    </If>
</IfModule>

RewriteEngine on
RewriteRule ^admin$ /index.php [L]

现在请求/admin将被重写/index.php,并REQUEST_URI处理为“/index.php”,并且在响应发送到客户端之前设置了标头,请参阅mod_headers - Early and Late Processing

正常模式是迟到的,即在运行内容生成器和响应标头之前立即设置请求标头,就像通过线路发送响应一样。始终在操作服务器中使用后期模式。


因此,根据您的环境中处理和修改请求的方式,您还必须将条件修改为<If "%{REQUEST_URI} == '...'">适合您环境的任何内容。

于 2017-01-30T23:16:32.883 回答