我在应用的htaccess中有一个RewriteRule,它应该与那种字符串完全匹配:01,02,03,04
并将其作为GET param(如&option=$2
)附加到url。但是,他匹配01,02,03,04
,将其添加为$option=$2
,然后再次匹配04
并将其附加为$otheroption=$3
。我在这里缺少什么?
RewriteRule ^([a-zA-Z0-9_\-]+)/([a-zA-Z0-9_-]+)/(([0-9]{2}[,]?)+)/([a-zA-Z]+)$ /index.php?site=$1&content=$2&objektart=$3&vermarktungsart=$4 [QSA,L]
答案 0 :(得分:1)
(([0-9]{2}[,]?)+)
中有双括号,因此该部分会两次捕获您的第三个参数。您可以使用set中的第5个结果而不是第4个结果,甚至可以更好地使用非捕获组。由于您只想在此处创建一个角色类,因此可以使用非捕获组:
RewriteRule ^([a-zA-Z0-9_\-]+)/([a-zA-Z0-9_-]+)/((?:[0-9]{2}[,]?)+)/([a-zA-Z]+)$ /index.php?site=$1&content=$2&objektart=$3&vermarktungsart=$4
注意内部括号开头的?:
。这意味着内容被视为一个组,但不适用于结果集。
输入
aaa/bbb/3333/ccc
这将产生输出
/index.php?site=aaa&content=bbb&objektart=3333&vermarktungsart=ccc
答案 1 :(得分:0)
我找到了一个解决方案([0-9,]{2,})
,但我仍然认为上面的解决方案也应该成功...