从apache重写参数中删除“ - ”

时间:2013-02-09 00:40:59

标签: apache mod-rewrite get

我正在使用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个参数包含“ - ”字符。 怎么避免这个? 谢谢你的帮助

1 个答案:

答案 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]