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

使用Htaccess重定向URL:匹配重定向参数到指定位置

解决旧URL带连字符slug的301重定向问题

问题分析

你之前的RewriteRule失效,核心原因是用了贪婪匹配的.*,导致slug里的连字符干扰了捕获组的正确性——.*会过度匹配内容,让后续的数字捕获组无法定位到正确位置。

正确的重写规则

针对你的URL结构,不管slug包含多少连字符,都可以通过精准的正则捕获和字符替换实现正确重定向:

RewriteEngine On

# 匹配旧URL并生成目标新URL
RewriteRule ^people/([^/]+)/(.+)-(\d+)/(.+)-(\d+)$ /link-$1-${2//-/\_}-${4//-/\_}--$3--$5.html [R=301,NC,L]

规则详解

  • ^people/([^/]+)/:匹配开头的people/路径,用[^/]+精准捕获单个路径段的城市名到$1(避免过度匹配)。
  • (.+)-(\d+)/:捕获第一个带连字符的slug到$2,并捕获该路径段末尾的数字到$3——(.+)贪婪匹配到最后一个连字符,确保不管slug有多少连字符都能完整捕获。
  • (.+)-(\d+)$:捕获第二个带连字符的slug到$4,捕获末尾的数字到$5。
  • 替换部分:
    • ${2//-/\_} 和 ${4//-/\_}:将两个slug中的所有连字符替换为下划线,符合新URL的格式要求。
    • --$3--$5:用双连字符分隔两个数字参数,对应目标URL的结构。
  • 标记说明:R=301表示永久重定向,NC忽略大小写,L表示当前规则匹配后停止后续规则处理。

验证示例

对于旧URL:
https://www.example.com/people/city/example-page-146128/guest-house-with-ac-rooms-6396
会被正确重定向到:
https://www.example.com/link-city-example_page-guest_house_with_ac_rooms--146128--6396.html

内容的提问来源于stack exchange,提问作者user1762269

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:05:30