kje*_*ldm 8 regex apache ssi server-side-includes mod-include
我喜欢新的apache httpd 2.4,有很多新的酷东西!
ap_expr是这些新的非常有前途的功能之一,
..但是以下SSI代码段不能按预期工作:
{{if expr="v('HTTP_SESSION') =~ /-user=([^&]+)/"}}
{{set var="user" value="$1"}}
{{endif}}
Run Code Online (Sandbox Code Playgroud)
该如果是工作,但该变种没有设置!这没有任何意义.
error.log说:
.. AH01330: regex capture $1 is out of range
Run Code Online (Sandbox Code Playgroud)
doc(http://httpd.apache.org/docs/2.4/expr.html#other)令人困惑,附近没有样本.
我知道SSI有一个遗留(变通方法)开关..但是我不想使用它,因为旧的开始和结束标签都是强制 遗留的
做类似的正则表达式解析 - 技巧SetEnvIfExpr也没有帮助
根据文档:
正则表达式反向引用 字符串 $0 ... $9 允许引用先前执行的、成功匹配的正则表达式中的捕获组。它们通常只能在与匹配正则表达式相同的表达式中使用,但某些模块允许特殊用途。
您正在使用捕获组,并且正在使用 index 引用该组1,使用标准正则表达式引擎应该没问题,但根据您可以参考的文档$0...$9。0我猜 apache 正在用您的捕获组填充索引,1而不是这样,您就得到了regex capture $1 is out of range
使用以下命令将索引更改$1为:$0
{{if expr="v('HTTP_SESSION') =~ /-user=([^&]+)/"}}
{{set var="user" value="$0"}}
{{endif}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1038 次 |
| 最近记录: |