我正在使用mod_rewrite并希望这样做:
RewriteRule ^item/([0-9]*)-(.*)-(.*)$ pages/page_item.php?id=$1-&name=$2-&firstname=$3 [QSA,L]
成为这个
item/25-Foo-Bar
但是当我通过PHP var_dump $ _get参数时,我得到了这个:
array (size=3)
'id' => string '25-' (length=4)
'prenom' => string 'Foo-' (length=4)
'nom' => string 'Bar' (length=7)
前2个参数包含“ - ”字符。 怎么避免这个? 谢谢你的帮助
答案 0 :(得分:2)
它包含-
,因为您显式将其置于重写中
RewriteRule ^item/([0-9]*)-(.*)-(.*)$ pages/page_item.php?id=$1-&name=$2-&firstname=$3 [QSA,L]
#--------------------------------------------------------------^--------^---
删除它们,您将得到您期望的结果。
你可以改善你的正则表达式。我建议使用(.*)
而不是使用贪婪的([^-]+)
。表达式[^-]+
表示匹配所有字符,但不包括下一个-
。
所以你的最终结果如下:
RewriteRule ^item/([0-9]*)-([^-]+)-(.*)$ pages/page_item.php?id=$1&name=$2&firstname=$3 [QSA,L]