正则表达式将尾部斜线添加到 URL 除非 URL 以文件扩展名结尾
Regex to Add Trailing Slash to URL Unless the URL Ends in a File Extension
我目前正在尝试让一个 WordPress 网站(使用重定向插件)始终向任何 URL 添加尾部斜杠,但前提是 URL 没有结束在斜杠或文件扩展名中(因此图像,.php files/pages 等不受影响)。
例如www.mysite.com/page
变为 www.mysite.com/page/
,但 www.mysite.com/page/
和 www.mysite.com/file.php
保持不变。
我能够让前半部分工作(如果它还没有结束,则强制使用尾部斜杠),但我正在努力添加额外的条件。
这是我目前拥有的:
来源URL:/([^\/]+)$
目标 URL://
不幸的是,不能使用 .htaccess 等。任何建议将不胜感激。
根据您的需要,您可以添加 (?!.*\.)
(后面没有句点),或 (?!.*\.php$)
(后面没有 php 扩展名),或 (?!.*\.(?:php|jpg)$)
(后面没有 php 或 jpg 扩展名),ecc.
完整示例:
\/(?!.*\.)[^\/]+$
\/(?!.*\.php$)[^\/]+$
\/(?!.*\.(?:php|jpg)$)[^\/]+$
在这些示例中,匹配组不是必需的,因此您可以替换为 [=14=]\/
。
如果在最后一个/
之后的部分不能有点那么你可以将它添加到否定字符class.
如果 delimiter 不是 /
那么您不必在模式中转义它。
/([^/.]+)$
我目前正在尝试让一个 WordPress 网站(使用重定向插件)始终向任何 URL 添加尾部斜杠,但前提是 URL 没有结束在斜杠或文件扩展名中(因此图像,.php files/pages 等不受影响)。
例如www.mysite.com/page
变为 www.mysite.com/page/
,但 www.mysite.com/page/
和 www.mysite.com/file.php
保持不变。
我能够让前半部分工作(如果它还没有结束,则强制使用尾部斜杠),但我正在努力添加额外的条件。
这是我目前拥有的:
来源URL:/([^\/]+)$
目标 URL://
不幸的是,不能使用 .htaccess 等。任何建议将不胜感激。
根据您的需要,您可以添加 (?!.*\.)
(后面没有句点),或 (?!.*\.php$)
(后面没有 php 扩展名),或 (?!.*\.(?:php|jpg)$)
(后面没有 php 或 jpg 扩展名),ecc.
完整示例:
\/(?!.*\.)[^\/]+$
\/(?!.*\.php$)[^\/]+$
\/(?!.*\.(?:php|jpg)$)[^\/]+$
在这些示例中,匹配组不是必需的,因此您可以替换为 [=14=]\/
。
如果在最后一个/
之后的部分不能有点那么你可以将它添加到否定字符class.
如果 delimiter 不是 /
那么您不必在模式中转义它。
/([^/.]+)$