【问题标题】:htaccess rewrite rule containing certain word包含特定单词的 htaccess 重写规则
【发布时间】:2023-01-26 19:35:18
【问题描述】:

我有一个 magento 网上商店,我使用一个插件来导入库存、价格和产品。令人讨厌的是,如果我更新产品名称等,这个插件不会保存旧的 url。 有什么办法可以用 htaccess 做到这一点吗?例如,我从产品 URL 的末尾删除了 SKU,但谷歌已将其中一些旧 URL 编入索引。

是否可以使用通配符将https://www.example.com/xerox-everyday-toner-for-tn242y-yellow-toner-cartridge-006r04226 重写为https://www.example.com/xerox-everyday-toner-for-tn242y-yellow-toner-cartridge?显然,每个产品“墨盒”一词之前的所有内容都会发生变化,因此我想要一个重定向,如果 URL 包含“-cartridge-”,则删除该模式之后的所有内容,因为 SKU 长度可以更改但仅包含字母数字字符。如果 URL 不包含“-cartridge-”,则不要执行任何操作。 我已经使用在线 htaccess 构建器尝试了一些正则表达式模式,但我似乎无法做到这一点(除非这些网站不处理正则表达式,这就是我认为它们不起作用的原因)。

【问题讨论】:

  • RewriteRule (.+-cartridge)-.+$ $1 [R=301,L] 应该可以。 (首先使用R=302 进行测试,这样如果有什么不起作用,您就不必处理浏览器缓存的重定向)
  • 这似乎是答案,谢谢。正如建议的那样,我首先尝试使用 302,但初步测试是肯定的

标签: .htaccess mod-rewrite


【解决方案1】:
RewriteRule (.+-cartridge)-.+$ $1 [R=301,L]

这应该可以完成工作。 -cartridge 之前的所有内容都被捕获(一次性捕获之前的动态部分和这个静态后缀,意味着我们没有从多个部分中组装替换 URL,但可以只使用 $1),之后- 加上一些任意字符必须跟在后面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多