.htaccess setEnv 为 %{HTTP_HOST}

lvo*_*mer 1 apache .htaccess setenv

是有可能这样做htaccess的SetEnv使用%{HTTP_HOST}

我像这样尝试:

SetEnv HOSTNAME %{HTTP_HOST}
Run Code Online (Sandbox Code Playgroud)

但这不起作用。我通过设置它来测试它

SetEnv HOSTNAME localhost.work
Run Code Online (Sandbox Code Playgroud)

那是有效的。所以这只是我的配置没有真正运行。

希望有人能给我一个快速提示,为什么这不起作用。

提前致谢。

MrW*_*ite 5

SetEnv(mod_env) 用于设置简单的硬编码名称/值对。SetEnvIf如果要根据请求的元素设置 var,则需要使用(mod_setenvif)。

例如,要将 env var 设置HOSTNAMEHostHTTP 请求标头的值:

SetEnvIf Host "(.*)" HOSTNAME=$1
Run Code Online (Sandbox Code Playgroud)

SetEnvIf指令有条件地设置环境变量……如果正则表达式 ( (.*)) 匹配第一个参数(即 HTTPHost标头),则它设置环境变量。

Host指的是HostHTTP 请求头(与HTTP_HOST服务器变量相同)。(.*)是与此匹配的捕获正则表达式,并且$1是对此捕获模式的反向引用。

参考:https :
//httpd.apache.org/docs/2.4/mod/mod_setenvif.html#setenvif

  • `SetEnvIf` 指令有条件地设置环境变量...如果正则表达式 (`(.*)`) 与第一个参数(本例中的 HTTP `Host` 标头)匹配,则它会设置环境变量。我在我的答案中添加了参考链接。 (2认同)