不是很擅长写正则,写的基本都只是勉强能用,下面的这个要求看看是否有高手能帮忙精简下。
忘不吝赐教RewriteRule ^i/([a-zA-Z0-9]+)((/b/){1}([a-zA-Z0-9])*)?((/c/){1}([a-zA-Z0-9]*))?((/p/){1}([0-9]+))?$ i.php?a=$1&b=$2&c=$5&d=$8
其实只是想取$1 $4 $7 $10,但是好像.htaccess超过十个参数就会错误。所以取不到$10,当然可以取$8然后用程序来处理,但是我想问,有没有可以精简这个句子,直接按$1 $2 $3 $4 获取,而且不破坏规则。越短越简越好

解决方案 »

  1.   

    地址:http://localhost/i/adidas/b/wontao/c/white/p/20
    我写的匹配:RewriteRule ^i/([a-zA-Z0-9]+)((/b/){1}([a-zA-Z0-9])*)?((/c/){1}([a-zA-Z0-9]*))?((/p/){1}([0-9]+))?$ i.php?a=$1&b=$2&c=$5&d=$8/i/ 固定 $a = adidas
    假如  /b/ 存在 则 $b = wontao   [a-zA-Z0-9-]*
    假如  /c/ 存在 则 $c = white    [a-zA-Z0-9-]*
    假如  /p/ 存在 则 $d = 20       [0-9]+这样能看清楚不。