为什么正则表达式模式没有在url重定向中给我正确的输出?

时间:2018-05-21 15:21:22

标签: php regex .htaccess url-redirection

我正在迁移一个网站,其中包含一些需要301重定向的网址。

我们一直在关注该网站,并试图了解获取当前网址并使其与新网站一起使用的最佳途径。

我们面临的问题是,许多网址在旧网站上有3个网段,而新网站只有1个网段,我们需要匹配网格并确保我们可以识别旧网址中的网格并将其与新的匹配。这是网址结构:

旧网站

/我们的产品/配件/瓦莱丽对象 - 阿尔弗雷德 - 收集 - 露西 - 地毯

/店铺名/最新-添加店,网上商店/瓦莱丽对象 - 阿尔弗雷德 - 收集 - 露西 - 地毯

/店铺名称/当代设计的配件,礼品/瓦莱丽对象 - 阿尔弗雷德 - 收集 - 露西 - 地毯

新网站

/瓦莱丽对象-露-地毯

继承我对正在使用的正则表达式模式的尝试:

20

网址https://sitename/our-products/sofas/about-a-lounge-sofa上输出的内容如下:

RedirectMatch 301 ^/our-products\/([-_!~*'()$a-zA-Z0-9]+)\/([-_!~*'()$a-zA-Z0-9]+)?$ /([-_!~*'()$a-zA-Z0-9]+)/$1

在上面我们需要能够拿起旧的网址并将这些网段删除,留下标题slug以及与网站上的产品相匹配的方式。

这是可能的吗?我们正在寻找正则表达式模式?

1 个答案:

答案 0 :(得分:1)

此重定向规则适合您:

RedirectMatch 301 ^/(?:our-products|shop-name)/.+/(\w+-\w+-)(?:.*-)?(\w+-\w+)$ /$1$2

确保使用新的浏览器来测试此更改。