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

如何在.htaccess中通过正则匹配创建重定向并传递中间变量

错误原因分析

  1. 正则锚点使用错误:$ 是正则的字符串结束符,只能放在整个匹配规则的末尾,原规则里把$放在-2021之前,相当于要求路径结束后再出现-2021,没有任何URL能符合这个匹配逻辑。
  2. 指令格式错误:Apache的重定向指令是RewriteRule,301状态码需要放在规则末尾的标志位中,不能直接写在指令后。
  3. .htaccess场景下,RewriteRule默认匹配的路径不带开头的/,不需要额外加前导斜杠。

正确配置

RewriteEngine On
RewriteRule ^news-(.*)-2021$ /news-$1-2022 [R=301,L]

规则说明

  • ^ 表示匹配路径的开头,避免其他前缀的URL被误匹配
  • (.*) 会捕获news-和-2021之间的所有内容,赋值给$1变量传递到目标URL
  • $ 表示匹配路径的结尾,保证只有后缀是-2021的URL才会被重定向
  • [R=301,L] 标识这是301永久重定向,且匹配到本条规则后不再执行后续的重定向规则
  • 原URL携带的查询参数会默认自动传递到新URL,不需要额外配置,如果需要丢弃查询参数,可以在标志位中加QSD,即[R=301,L,QSD]

注意事项

测试时请先清空浏览器缓存,301永久重定向会被浏览器长期缓存,旧的错误规则可能会在缓存有效期内持续生效,导致新规则看起来不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:27:02