htaccess和RewriteRule Chain

时间:2013-06-20 11:24:19

标签: .htaccess url-rewrite-module

我遇到了htaccess rewrite_mode的问题。 当我在这些规则中使用多个$ _GET变量时,第一个变量得到的名称文件是第一个$ _GET变量。请帮帮我。

RewriteEngine on
RewriteBase   /ts/
RewriteRule     ^(.+)/$                  ts.php?a=$1 [C]
RewriteRule     ^(.*)/(.+)/$             ts.php?a=$1&b=$2 [C]
RewriteRule     ^(.*)/(.*)/(.+)/$        ts.php?a=$1&b=$2&c=$3 [C]
RewriteRule     ^(.*)/(.*)/(.*)/(.+)/$   ts.php?a=$1&b=$2&c=$3&d=$4 [C,L]

这是“localhost / ts / 1 /”

的输出
Array ( [a] => 1 )

这是“localhost / ts / 1/2 /”

的输出
Array ( [a] => ts.php [b] => 2 )

这是“localhost / ts / 1/2/3 /”

的输出
Array ( [a] => ts.php [b] => 2 [c] => 3 )

这是“localhost / ts / 1/2/3/4/5/6 /”的输出

Array ( [a] => ts.php/2/3 [b] => 4 [c] => 5 [d] => 6 )

1 个答案:

答案 0 :(得分:1)

我不会使用链标志而只是反转你的RewriteRules,例如:

RewriteEngine on

RewriteBase   /ts/

RewriteRule     ^(.*)/(.*)/(.*)/(.+)/$   ts.php?a=$1&b=$2&c=$3&d=$4 [L]
RewriteRule     ^(.*)/(.*)/(.+)/$        ts.php?a=$1&b=$2&c=$3 [L]
RewriteRule     ^(.*)/(.+)/$             ts.php?a=$1&b=$2 [L]
RewriteRule     ^(.+)/$                  ts.php?a=$1 [L]