我试图在以/ 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 ,他们说魔术不存在☺。