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 的一部分的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个 301 重定向会导致重定向到错误的 url?

htaccess 301 重定向某些 URL 模式

使用哈希部分(锚)重定向 301 #

重定向除部分 url 301 之外的所有 url

301 重定向正则表达式模式

302重定向