好的,我的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]