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

.htaccess中RewriteRule末尾参数可选时的字符拆分问题

.htaccess 可选最后参数的重写规则修复

你的当前规则存在逻辑问题:/?([0-9a-zA-Z_-]+) 中,斜杠是可选的,且两个捕获组的正则完全一致,导致单个参数请求时,正则引擎会强制拆分字符串,把最后一个字符分配给第二个捕获组,从而出现slug被截断、var错误赋值的情况。

解决方案

可以通过两种方式实现需求:

方法一:拆分两条规则(优先级匹配)

先匹配更具体的带第二个参数的场景,再匹配单个参数的场景:

# 匹配带第二个参数的URL(如 produktas/xxx/yyy)
RewriteRule ^produktas/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)$ /produktas?slug=$1&var=$2 [NC,L]
# 匹配仅含单个参数的URL(如 produktas/xxx)
RewriteRule ^produktas/([0-9a-zA-Z_-]+)$ /produktas?slug=$1 [NC,L]

方法二:单规则实现可选参数

用非捕获组包裹第二个参数的完整部分(含前置斜杠),并标记为可选,同时允许第二个捕获组为空:

RewriteRule ^produktas/([0-9a-zA-Z_-]+)(?:/([0-9a-zA-Z_-]+))?$ /produktas?slug=$1&var=$2 [NC,L]

效果验证

  • 访问 http://site.lt/produktas/the-glass 时,$_GET 结果为:
    Array ( [slug] => the-glass [var] => )
    
  • 访问 http://site.lt/produktas/the-glass/blue 时,$_GET 结果为:
    Array ( [slug] => the-glass [var] => blue )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:52:03