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

RewriteRule规则调整:实现URL中?替换为/的跳转需求

正确的Apache RewriteRule规则实现URL映射

你的原规则无法生效的核心原因:

  • RewriteRule的匹配模式仅作用于URL的路径部分(即?之前的内容),不会包含查询字符串。
  • 正则中的?是特殊元字符,即使转义也无法捕获?后的内容,因为这部分不属于路径匹配范围。

要实现你需要的URL映射,需结合RewriteCond捕获查询字符串,再通过RewriteRule拼接目标URL:

RewriteEngine On
# 拆分查询字符串:%1捕获第一个&之前的内容,%2捕获剩余参数
RewriteCond %{QUERY_STRING} ^([^&]+)&?(.*)$
# 匹配路径并拼接目标URL
RewriteRule ^/open.html$ https://www.domain2.com/c/%1?%2 [NC,R=301,L]

规则细节说明:

  • RewriteCond %{QUERY_STRING} ^([^&]+)&?(.*)$:将查询字符串拆分为两部分,%1对应cuSDyh,%2对应utm_medium=rep-email。
  • RewriteRule ^/open.html$ https://www.domain2.com/c/%1?%2:匹配原路径/open.html,把%1插入到目标路径中,%2保留为新的查询字符串。
  • 标志[NC,R=301,L]:NC忽略大小写,R=301表示永久重定向,L表示匹配后终止后续规则处理。

如果使用Nginx,对应的通用规则如下:

if ($request_uri ~* ^/open.html\?([^&]+)&?(.*)$) {
    rewrite ^ https://www.domain2.com/c/$1?$2 permanent;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:20:31