如何用正则表达式在301重定向中移除URL最后一个slug
解决Apache 301重定向:替换路径前缀并移除日期Slug
现有规则问题分析
你当前的RewriteRule存在语法错误,且未覆盖需求中的移除日期Slug逻辑:
- 规则多余转义了
^,且用*这种通配符写法不符合Apache Rewrite的正则语法 - 仅匹配了
/event/开头的路径,没有捕获中间的活动名称,也没处理末尾的日期部分
正确的RewriteRule配置
先确保你的.htaccess已经开启重写引擎:
RewriteEngine On
然后添加以下规则实现需求:
# 匹配 /event/活动名称/日期/ 格式的URL,重定向到 /vare/活动名称/ RewriteRule ^/event/([^/]+)/\d{4}-\d{2}-\d{2}/?$ /vare/$1/ [L,R=301]
规则解释
^/event/:匹配URL路径以/event/开头([^/]+):捕获活动名称(比如svampetur-roskilde),[^/]+表示匹配任意非斜杠的字符序列/\d{4}-\d{2}-\d{2}/?$:匹配YYYY-MM-DD格式的日期,末尾的/?允许URL最后带或不带斜杠/vare/$1/:重定向目标,$1引用前面捕获的活动名称[L,R=301]:L表示执行完这条规则后停止后续规则,R=301标记为永久重定向
额外说明
如果需要匹配带时间的日期格式,可以调整正则中的日期部分;只要日期符合YYYY-MM-DD结构,这个规则就能适配不同的活动URL。
内容的提问来源于stack exchange,提问作者mbs1337
相关产品推荐
相关产品推荐

