【问题标题】:Regex to Add Trailing Slash to URL Unless the URL Ends in a File Extension正则表达式向 URL 添加尾部斜杠,除非 URL 以文件扩展名结尾
【发布时间】:2020-09-10 16:37:08
【问题描述】:

我目前正在尝试让一个 WordPress 网站(使用重定向插件)始终向任何没有斜杠的 URL 添加斜杠,但前提是 URL 没有以斜杠或文件扩展名结尾(所以图片、.php 文件/页面等不受影响)。

例如www.mysite.com/page 变为 www.mysite.com/page/,但 www.mysite.com/page/www.mysite.com/file.php 被单独留下。

我能够让前半部分工作(如果它还没有以一个结尾,则强制使用尾部斜杠),但我正在努力添加额外的条件。

这是我目前拥有的:

来源网址:/([^\/]+)$

目标网址:/$1/

不幸的是,使用 .htaccess 等不是一种选择。任何建议将不胜感激。

【问题讨论】:

    标签: wordpress redirect url-rewriting regexp-replace


    【解决方案1】:

    如果最后一个/ 之后的部分不能有点,则可以将其添加到否定字符类中。

    如果delimiter 不是/,那么您不必在模式中对其进行转义。

    /([^/.]+)$
    

    Regex demo

    【讨论】:

    • 这个和 horcrux 的解决方案都对我有用。感谢您的帮助!
    【解决方案2】:

    根据您的需要,您可以添加(?!.*\.)(不带句点),或(?!.*\.php$)(不带php扩展名),或(?!.*\.(?:php|jpg)$)(不带php或jpg扩展名) , 抄送。

    完整示例:

    \/(?!.*\.)[^\/]+$
    \/(?!.*\.php$)[^\/]+$
    \/(?!.*\.(?:php|jpg)$)[^\/]+$
    

    在这些示例中,匹配组不是必需的,因此您可以替换为 $0\/

    查看工作演示 herehere

    【讨论】:

    • 这个和第四只鸟的解决方案都对我有用。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 2011-07-06
    • 2011-09-13
    • 2021-09-12
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多