0

我有一个可以是大写或小写的环境变量(从 HTTP 标头设置)。

SetEnvIfNoCase Accept-Language "^([a-z][a-z])(-[a-z][a-z])*" LANGUAGE=$1 COUNTRY=$2

如何在 apache 中将 COUNTRY 变量转换为小写。

4

2 回答 2

1

您可以尝试使用 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 文件中。

于 2013-08-27T22:19:18.240 回答
0

我想出了一个更简单的解决方案:

RequestHeader set country "expr=%{tolower:%{env:COUNTRY}}"

这将创建一个请求标头“country”,它是 COUNTRY 环境变量的小写版本。

如果您从 http 标头开始并且想要创建其小写对应项,则可以改用该req函数:

RequestHeader set country "expr=%{tolower:%{req:COUNTRY}}"

请参阅https://httpd.apache.org/docs/2.4/expr.html#functions

于 2021-10-29T15:39:47.527 回答