2016-10-15 20 views
1

その後、こんにちはIAMは私のhtaccessでもっとして10個の変数と一致するようにしようとしたが、10日の変数の後にそれが認識doesntのと最初の$ 1から始まる - しかし、私は期待して、「$ 11」ではない$ 1htaccessの試合より10

ブラウザのURL :http://localhost/s/adobe+cs5/58058,18793/111/666/

htaccessの書き換え:Array ([search] => adobe cs5 [categories] => Array ([0] => 58058 [1] => 18793 [2] =>) [pricefrom] => 111 [priceto] => adobe cs51 [email] => adobe cs53)

RewriteEngine On 
RewriteBase /eule2/ 
RewriteRule ^s/([^/\.]+)/(([0-9]+)(,([0-9]+?))?(,([0-9]+?))?/)(([^/]+)/)?(([^/]+)/)?(([^/]+)/)?((?<email>[^/]+)/)?$ 
search.php?search=$1&categories[]=$3&categories[]=$5&categories[]=$7&pricefrom=$9&priceto=$11&email=$13 [L] 

答えて

1

あなたはかなりの数の不要なオプションの捕獲グラムを持っていますあなたの正規表現のルーツ。これは、このURLを処理する

RewriteRule ^s/([^/.]+)/(\d+)(?:,(\d+?))?(?:,(\d+?))?/(?:([^/]+)/)?(?:([^/]+)/)?(?:([^/]+)/)?(?:([^/]+)/)?(?:([^/]+)/)?$ search.php?search=$1&categories[]=$2&categories[]=$3&categories[]=$4&pricefrom=$5&priceto=$6&email=$7 [L,QSA,NC] 

あなたはこのルールを使用することができますグループが10未満

にキャプチャグループの数を持って(?:...)、すなわち非キャプチャに「オプショングループ」を変換することができます

http://localhost/s/adobe+cs5/58058,18793/111/666/adobe+cs53/ 

search.phpにこれらGETのパラメータを移入します

Array 
(
    [search] => adobe cs5 
    [categories] => Array 
     (
      [0] => 58058 
      [1] => 18793 
      [2] => 
     ) 
    [pricefrom] => 111 
    [priceto] => 666 
    [email] => adobe cs53 
)