Apache SetEnvIf Request_URI与URL不匹配

时间:2019-10-15 12:36:40

标签: apache .htaccess

我试图在以/ exit /开头的任何URL上将HTTP标头X-Robots-Tag设置为“ noindex”,但是我不知道为什么SetEnvIf Request_URI根本不匹配我的URL。

我试图解决此问题的.htaccess文件的一部分:

# For info
SetEnvIf Request_URI ^(.*)$ REQUEST_URI=$1
Header set X-Request-Uri "%{REQUEST_URI}e"

# Works
SetEnvIf Request_URI ^/.* WHY1
Header set X-Test1 "test1" env=WHY1

# Does not work any more
SetEnvIf Request_URI ^/e.* WHY2
Header set X-Test2 "test2" env=WHY2
SetEnvIf Request_URI ^\/e.* WHY3
Header set X-Test3 "test3" env=WHY3
SetEnvIf Request_URI ^\/\e.* WHY4
Header set X-Test4 "test4" env=WHY4
SetEnvIf Request_URI ^/\e.* WHY5
Header set X-Test5 "test5" env=WHY5

# What i'd like it worked
SetEnvIf Request_URI ^/exit/.* NOINDEX
Header set X-Robots-Tag "noindex" env=NOINDEX

这是我在Chrome浏览器的“网络”标签中看到的:

x-request-uri: /exit/22216832/
x-test1: test1

这是我真正的期望:

x-request-uri: /exit/22216832/
x-test1: test1
x-test2: test2
x-test3: test3
x-test4: test4
x-test5: test5
x-robots-tag: noindex

编辑

我牺牲了一些头发,发现我实际上正在覆盖Request_URI,这似乎是某种全局变量。经过更多测试后,我还发现此变量有点骗子:

.htaccess文件:

# Getting value from a global variable
Header set X-Request-Uri "%{Request_URI}e"

# Expecting that Request_URI1 will have the same value as Request_URI
SetEnvIf Request_URI ^(.*)$ Request_URI1=$1
Header set X-Request-Uri1 "%{Request_URI1}e"

Chrome浏览器中的“网络”标签:

x-request-uri: /exit/12313/
x-request-uri1: /index.php

因此,全局空间中的Request_URI是 / exit / 12313 / ,但是对于SetEnvIf如果它是 /index.php ,他们说魔术不存在☺。

0 个答案:

没有答案