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

如何在Apache RewriteRule的正则表达式中添加+(加号)匹配规则?

RewriteRule规则支持匹配+号的修正方案

你之前修改不生效的核心原因有两个:

  • 字符组内连字符-的位置异常:你将+放在-之后,-没有位于字符组的首尾位置时会被正则解析为范围运算符,而非匹配普通的连字符,导致整个字符组匹配逻辑异常。
  • Apache mod_rewrite默认解码规则:URL路径中的+默认会被mod_rewrite解码为空格,即便正则匹配成功,传递给index.php的url参数也会丢失+,看起来匹配不生效。

正确修改方案

调整字符组内字符顺序,将+放在-之前保证-位于字符组末尾,同时添加B标志保留特殊字符的原始编码传递:

RewriteRule ^([A-Za-z0-9+-]+)/?$ index.php?url=$1 [L,B]

如果担心位置问题,也可以直接转义连字符,无需调整字符顺序:

RewriteRule ^([A-Za-z0-9\-+]+)/?$ index.php?url=$1 [L,B]

验证注意事项

  • 若不需要保留+原样传递到url参数,可以省略B标志,仅修改正则部分即可。
  • 如果修改后还是不生效,检查你原来的规则中是否有复制带入的不可见软连字符,直接复制上面的完整规则替换原有规则即可。
  • 修改.htaccess后建议用浏览器无痕模式测试,避免旧的重定向缓存影响验证结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:36:03