1

私はmod_rewriteを使用していて、これを実行したい:

RewriteRule ^item/([0-9]*)-(.*)-(.*)$ pages/page_item.php?id=$1-&name=$2-&firstname=$3 [QSA,L]

これになるために

item/25-Foo-Bar

しかし、PHPを介して$ _getパラメーターをvar_dumpすると、次のようになります。

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 に答える