1

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

4

1 回答 1

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]
于 2013-02-09T00:44:32.417 回答