我已阅读有关 Apache 2.4 Expr 的文档,但无法在配置文件中使其工作。有人能给我一个如何格式化字符串内表达式的示例吗?文档说下面的方法应该有效。
# Function example in string context
Header set foo-checksum "expr=%{md5:foo}"
但是,当我将该代码剪切并粘贴到我的配置文件中时,出现以下错误:
Unrecognized header format %
我也尝试过这些:
Header set exprResult "expr=tolower('MAKEMELOWERCASE')"
Header set exprResult "expr=%{tolower('MAKEMELOWERCASE')}"
Header set exprResult "(tolower('MAKEMELOWERCASE'))"
Header set exprResult "${tolower('MAKEMELOWERCASE')}"
答案1
好的,一旦你有了一个有效的变量(Apache 2.4.7),这将起作用:
Header set myHeaderName "%{REQUEST_URI}e"
您只需在字符串末尾附加一个“e”。现在设置您自己的变量(用于字符串输出)是有问题的。Declare 不起作用。不过有一个解决方法。使用 mod_rewrite 来设置变量。这是一个例子。
RewriteEngine on
RewriteRule .* - [E=INFO_REQUEST_URI:%{REQUEST_URI}]
Header set X-Request-URI "%{INFO_REQUEST_URI}e"