301 重定向 - 替换 URL 的一部分
Posted
技术标签:
【中文标题】301 重定向 - 替换 URL 的一部分【英文标题】:301 redirects - replace a section of the URL 【发布时间】:2018-12-18 04:26:06 【问题描述】:我正在改造一家 Woocommerce 商店,我需要设置重定向,将包含类别名称的旧 URL 发送到新 URL,而新 URL 不会。
编辑:旧网址和新网址将都包含product/
,并且旧网址可能有也可能没有尾部斜杠。
一个例子是:
旧网址:myshop.co.uk/product/category-name/sub-category-name/product-name
新网址:myshop.co.uk/product/product-name
谁能告诉我 reg exp 将是什么来实现这一点?
【问题讨论】:
尝试(myshop.co.uk\/\w*)(.+(?=\/[\w-]*$))(\/[\w-]*$)
并替换为 \1\3
here
谢谢,这真的很有帮助。但是我应该说 URL 每次都会包含“/product/”。我已将您的表达式更新为(.*\/product)(.+(?=\/[\w-]*))(\/[\w-]*$)
,这似乎可以完成这项工作,但是如果我在旧 URL 中添加一个斜杠,则表达式不起作用。是否可以要求表达式搜索尾部斜杠或什么都不搜索?
好吧,试试(.*\/product)(.+(?=\/[\w-\/]+$))(\/[\w-\/]+$)
here。
【参考方案1】:
搜索(?<=product/)(?:[^/]+/)+(?=[^/]+/?$)
并替换为空字符串。
【讨论】:
您好,感谢您的回复。我必须在你的斜杠之前添加反斜杠才能让它工作,但它确实有效。此表达式是否可以检查 URL 末尾的斜杠? 实际上,我只是再次检查了一下,发现它只适用于“产品”和“产品名称”之间的两个子页面。这对我来说不太适用,因为可能还有更多。 根据您使用的工具,可能确实需要在正斜杠之前使用反斜杠。我刚刚更新了我的答案以说明可选的斜杠。 我明白了。我刚刚更新了我的答案,以便product/
和产品名称之间可以有任意数量的类别。以上是关于301 重定向 - 替换 URL 的一部分的主要内容,如果未能解决你的问题,请参考以下文章