如何在Apache REQUEST_URI上使用Regex?

时间:2019-05-18 15:57:06

标签: regex apache regex-group ssi request-uri

当前将Apache 2.4与SSI Legacy Parser On一起使用,并尝试使用Regex代码获取我想要的结果。

<!--#set var="test" value=$REQUEST_URI -->
<!--#echo var="test" -->

从上面的代码中得到的示例结果是:

/path1/path2/path3/filename.html

/path1/path2/path3/filename.html?id=2019

我想要得到的示例结果是:

/path1/path2/path3/

最后一个正斜杠之后的所有内容都将被删除,而不管路径数如何。

是否存在正则表达式代码或我可以用来执行此操作的东西?

1 个答案:

答案 0 :(得分:1)

当然!在这里,我们可以简单地添加一个斜线边界,然后从开始到最后一个斜线之间滑动所有内容:

(.*)\/

表达式可以就此停止,可以使用$1进行简单调用。但是,如果您愿意,我们还可以为其添加更多边界,例如开始和结束字符:

^(.*)\/.*$

enter image description here

RegEx

如果这不是您想要的表达式,则可以在regex101.com中修改/更改表达式。

RegEx电路

您还可以在jex.im中可视化您的表达式:

enter image description here

JavaScript演示

const regex = /^(.*)\/.*$/gm;
const str = `/path1/path2/path3/filename.html
/path1/path2/path3/filename.html?id=2019
/path1/path2/path3/path4/filename.html?id=2019
/path1/path2/path3/path4/path5/filename.html?id=2019

`;
const subst = `$1`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);