You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用带多通配符的RewriteRule实现旧产品URL到新域名的重定向?

解决旧域名产品URL到新域名的301重定向问题

首先,你的产品URL重写规则存在正则语法错误,导致无法匹配目标URL。以下是修正后的完整规则及关键说明:

修正后的.htaccess完整代码

RewriteEngine On

# 重写产品链接:匹配旧格式 /webshop/分类/detail/数字ID/产品名.html
RewriteRule ^webshop/([^/]+)/detail/[0-9]+/([^/]+)\.html$ https://newsite.com/shop/$1/$2/ [R=301,NC,L]

# 重写产品分类链接:匹配 /webshop/分类 格式
RewriteRule ^webshop/([^/]+)$ https://newsite.com/shop/$1/ [R=301,NC,L]

# 静态页面定向规则
RewriteRule ^contact.html$ https://newsite.com/contact-us/ [R=301,NC,L]
RewriteRule ^about-us.html$ https://newsite.com/about/ [R=301,NC,L]
RewriteRule ^sale.html$ https://newsite.com/sale/ [R=301,NC,L]
RewriteRule ^terms-and-conditions.html$ https://newsite.com/terms-and-conditions/ [R=301,NC,L]
RewriteRule ^customs-and-tax-information.html$ https://newsite.com/customs-and-tax-information/ [R=301,NC,L]
RewriteRule ^delivery-times-and-shipping-costs.html$ https://newsite.com/shipping/ [R=301,NC,L]

# 剩余所有页面重定向(保留原路径)
RewriteRule ^(.*)$ https://newsite.com/$1/ [R=301,NC,L]

关键修正点说明

  1. 产品规则正则修正
    原规则错误使用$(正则结束符)导致匹配失败,新规则:

    • ([^/]+):精准匹配分类名称(仅匹配到第一个/前的内容,避免过度匹配)
    • [0-9]+:专门匹配产品数字ID,替代泛用的.*提升准确性
    • ([^/]+)\.html:匹配产品名称并忽略.html后缀
    • 重定向目标中$1对应分类、$2对应产品名,生成符合要求的新URL格式
  2. 规则顺序调整
    产品规则必须放在分类规则之前,因为分类规则的匹配范围更广,如果先执行分类规则,产品URL会被错误识别为分类链接。

  3. 分类规则目标修正
    原规则https://newsite.com/(.*)$1/存在语法错误,修正为https://newsite.com/shop/$1/,确保分类页跳转到新域名的对应路径。

  4. 剩余页面重定向优化
    原规则会将剩余请求直接跳转到新域名根目录,丢失原路径。修正后保留原路径结构,避免不必要的404错误。

测试提示

  • 调试时可暂时将R=301改为R=302(临时重定向),避免浏览器缓存干扰测试结果,确认规则生效后再改回301
  • 可通过服务器日志查看规则匹配情况,定位潜在问题

内容的提问来源于stack exchange,提问作者Robin R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 18:23:16