用get perameters重写引擎


Rewrite Engine with get perameters

好的,我的RewriteRule有问题。我用的是这样的.htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /YiiBund/app/
RewriteRule ^(.*)$ index.php?/$1 [L]

尝试打开http://127.0.0.1/YiiBund/app/de/site/index?id=5&test=6,$_GET看起来像这样:

array(1) { 
    ["/de/site/index"]=> string(0) "" 
}

但是如果我尝试另一个重写规则:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /YiiBund/app/
RewriteRule . index.php [L]

我得到这个:

array(2) { 
    ["id"]=> string(1) "5" 
    ["test"]=> string(1) "6" 
}

有人知道如何将这两条规则结合起来,这样我就会得到这样的结果吗:

array(1) { 
    ["/de/site/index"]=> string(0) "" 
    ["id"]=> string(1) "5" 
    ["test"]=> string(1) "6"
}

编辑:我发现了,问题出在哪里?通过第一个参数。如果我愿意更换?用&它能工作吗,但我不能在我的代码中这样做。

放置[QSA,L]而不仅仅是[L]

参考:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html(ctrl+f"qsa")

示例

   RewriteRule ^/YiiBund/app/de/site/index/id/(.*)/?$
           /YiiBund/app/de/site/index.php?id=$1 [L,QSA]
   RewriteRule ^/YiiBund/app/de/site/index/id/test(.*)/?$ /YiiBund/app/de/site/index/id/test=$1 [L,QSA]