2013-02-09 44 views
1

我使用mod_rewrite,想做到这一点:删除 “ - ” 从Apache的重写参数

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个参数包括“ - ”字符。 如何避免这种情况? 感谢您的帮助

回答

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] 
+0

哦,那是从我一个愚蠢的错误,谢谢老兄的明确和快速的答案:) – Klaitos 2013-02-09 00:49:08