regex 常规表达式单词前无[关闭]

6gpjuf90  于 2023-06-07  发布在  其他
关注(0)|答案(2)|浏览(155)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

3天前关闭。
Improve this question
我在我的网站URLS有一些变化。我曾经有过这些URL:

mywebsite.com/weblog/page/1
mywebsite.com/weblog/page/2

我有这些URL:

mywebsite.com/category/weblog/page/1
mywebsite.com/category/weblog/page/2

我想将所有旧的URL(/weblog/page/*)重定向到mywebsite.com/category/weblog。有谁能告诉我,我必须使用哪个正则表达式来包含/weblog/page/而不是/category/weblog/page

evrscar2

evrscar21#

通常你可以试试

(?<!\/category)(?=\/weblog\/page)

并将其替换为

/category

您可以看到测试结果:https://regex101.com/r/5bwyKZ/1
但是如果你使用的是一些不支持lookbehind的正则表达式引擎(比如旧版本的Safari),你可以使用这个兼容性更好的正则表达式:

^(.*?)(?:\/category)?(\/weblog\/page\/.*)

并将其替换为

$1/category$2

以下是一些测试用例:https://regex101.com/r/Wqb0ka/1

j91ykkif

j91ykkif2#

下面是在Apache.htaccess文件中使用此正则表达式将旧URL重定向到新URL的示例:

^weblog/page/(.*)$ /category/weblog [R=301,L]

相关问题