Apache 2.4查询字符串与正则表达式

时间:2017-04-01 16:44:54

标签: regex apache query-string

好的......试图在2.4

中编写SSI的新方法

那里的任何SSI大师都可以提供帮助......我真的很感激。

我的代码与

上的SSILegacyExprParser一起使用
http://path-to-webpage?dynContent=AboutUs

<!--#set var="dynContent" value="" -->
<!--#if expr="$QUERY_STRING = /dynContent=([a-zA-Z0-9]+)/" -->
<!--#set var="dynContent" value="$1" -->
<!--#else -->
<!--#set var="dynContent" value="default" -->
<!--#endif -->

<!--#echo var="dynContent" -->

预期响应是关于,否则默认

我试图重新编写这一行,使其在没有SSILegacyExprParser的Apache 2.4中工作....

<!--#set var="dynContent" value="" -->
<!--#if expr="(%{QUERY_STRING} =~ /dynContent=([a-zA-Z0-9]+)/)" -->
<!--#set var="dynContent" value="$0" -->
<!--#else -->
<!--#set var="dynContent" value="default" -->
<!--#endif -->

这部分有效。 我收到回复,因为dynContent = AboutUs

我真的需要它回馈AboutUs,否则回退到默认

知道我怎么能得到这个吗?

1 个答案:

答案 0 :(得分:1)

好的......这需要大量的研究和一些运气.....大多数运气: - )

我让这个工作....我理解旧的使用正则表达式PRE Apache 2.4但我不明白Apache 2.4后的正则表达式.....但我确实得到了这个工作。 这是我使用的代码。

<!--#set var="dynContent" value="" --> 
<!--#if expr="v('QUERY_STRING') =~ /(dynContent=)(.*)/ && $2 =~ /(.*)/" -->
<!--#set var="dynContent" value="$0" -->
<!--#else -->
<!--#set var="dynContent" value="default" -->
<!--#endif -->

我现在可以在页面中使用它以及包含网页的变量

<!--#echo var="dynContent" -->
<!--#include virtual="/path-to-page/${dynContent}.shtml" -->

如果有人可以向我解释......请做....我想尝试理解它。