如何添加.htaccess这样的条件?

时间:2017-01-30 20:40:10

标签: php .htaccess header mod-headers

需要像这样添加.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,但不知道在我的情况下如何使用..

我会很高兴有任何帮助!

1 个答案:

答案 0 :(得分: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.phpREQUEST_URI将被处理为&#34; /index.php"并且在将响应发送到客户端之前设置标头,请参阅mod_headers - Early and Late Processing

  

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

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