我有一个可以是大写或小写的环境变量(从 HTTP 标头设置)。
SetEnvIfNoCase Accept-Language "^([a-z][a-z])(-[a-z][a-z])*" LANGUAGE=$1 COUNTRY=$2
如何在 apache 中将 COUNTRY 变量转换为小写。
我有一个可以是大写或小写的环境变量(从 HTTP 标头设置)。
SetEnvIfNoCase Accept-Language "^([a-z][a-z])(-[a-z][a-z])*" LANGUAGE=$1 COUNTRY=$2
如何在 apache 中将 COUNTRY 变量转换为小写。
您可以尝试使用 apache 内置的rewrite map函数“tolower”。您必须在服务器或虚拟主机配置中定义它:
RewriteMap lc int:tolower
${lc:}
然后你可以在重写规则中使用它:
RewriteRule ^ - [E=LANGUAGE:${lc:%{ENV:LANGUAGE}},E=COUNTRY:${lc:%{ENV:COUNTRY}},L]
# (Or just the "COUNTRY")
RewriteRule ^ - [E=COUNTRY:${lc:%{ENV:COUNTRY}},L]
规则本身可以在 htaccess 文件中。
我想出了一个更简单的解决方案:
RequestHeader set country "expr=%{tolower:%{env:COUNTRY}}"
这将创建一个请求标头“country”,它是 COUNTRY 环境变量的小写版本。
如果您从 http 标头开始并且想要创建其小写对应项,则可以改用该req
函数:
RequestHeader set country "expr=%{tolower:%{req:COUNTRY}}"