0

私は(例)オンラインショップのhtaccessリダイレクトディレクティブを作成してきました。

商品はproduct.phpに表示され、IDパラメーターが渡されます。

私が目指しているのは

products/someValue/someID

にマップ

product.php?param1=someValue&param2=someID

これが私が今のところいるところです。これはほとんど機能しますが、いくつかのことが私が望んでいるものではありません。基本的にproducts/、スラッシュですべてを分離し、その数に関係なく、それぞれをパラメーターとして使用する必要があります。また、末尾のスラッシュはオプションです。含まれていない場合、私のルールは404をスローします。誰かが私を正しい方向に向けることができますか?

RewriteRule ^products/(.*)/(.*)/.*$ /product.php?param1=$1&param2=$2
4

2 に答える 2

1

現在の正規表現は貪欲です。数量詞はデフォルトで貪欲です。を追加する?と、貪欲になります。/または、次のいずれかが機能する以外のすべてに一致するように正規表現を変更できます。

RewriteRule ^products/(.*?)/(.*?)(/.*)?$ /product.php?param1=$1&param2=$2
RewriteRule ^products/([^/]*)/([^/]*)(/.*)?$ /product.php?param1=$1&param2=$2

これをよりよく理解するために、正規表現の貪欲について読んでください。

于 2012-09-21T16:11:49.990 に答える
1

正規表現を貪欲でないものに変更してみてください。

RewriteRule ^products/(.*?)/(.*?)/.*$ /product.php?param1=$1&param2=$2

また:

RewriteRule ^products/([^/]+)/([^/]+)/.*$ /product.php?param1=$1&param2=$2
于 2012-09-21T16:11:53.563 に答える