【问题标题】:How to use Regex on Apache REQUEST_URI?如何在 Apache REQUEST_URI 上使用正则表达式?
【发布时间】:2019-05-18 15:57:06
【问题描述】:

目前使用带有 SSI Legacy Parser On 的 Apache 2.4 并尝试使用 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/

删除最后一个正斜杠之后的任何内容,无论可能有多少路径。

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

【问题讨论】:

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


    【解决方案1】:

    当然!在这里,我们可以简单地添加一个斜线边界并从头到尾滑动所有内容:

    (.*)\/
    

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

    ^(.*)\/.*$
    

    正则表达式

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

    正则表达式电路

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

    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);

    【讨论】:

    • 你让我朝着正确的方向前进......根据你提供的内容得到了它。 跨度>
    猜你喜欢
    • 1970-01-01
    • 2016-05-30
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    相关资源
    最近更新 更多