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

.htaccess RewriteRule匹配参数末尾多余斜杠如何解决

重写规则修改方案

问题原因

原规则中使用的贪婪匹配(.+)会优先尽可能多的捕获字符,末尾可选的/?匹配优先级更低,所以当URL末尾带斜杠时,斜杠会被前面的捕获组捕获,最终导致参数末尾携带多余斜杠。

修改后的.htaccess配置

RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?book=$1&chapter=$2 [NC,L,QSA]
RewriteRule ^([^/]+)/?$ index.php?book=$1 [NC,L,QSA]

规则说明

将原规则中的.+替换为[^/]+:

  • [^/]代表匹配除路径分隔符斜杠之外的所有字符
  • +代表至少匹配1个有效字符
    这样每一段捕获的内容只会包含对应路径段的有效内容,不会包含斜杠,末尾可选的/?仅匹配路径末尾可能存在的单个斜杠,不会被捕获到参数中。同时规则保留了QSA标记,原URL携带的查询参数会自动合并到重写后的参数列表中,不会丢失。

效果验证

修改规则后所有访问场景都能得到预期参数:

  • 访问mydomain.com/coding/mysql/,参数为Array ( [book] => coding [chapter] => mysql )
  • 访问mydomain.com/coding/mysql/?contactId=333&UTM=aff,参数为Array ( [book] => coding [chapter] => mysql [contactId] => 333 [UTM] => aff )
  • 访问mydomain.com/coding/?contactId=333,参数为Array ( [book] => coding [contactId] => 333 )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:18:00