2013-10-24 87 views
2

我有一些问题,以建立我的网址重写。在我的本地服务器上,使用nginx,一切都很顺利。但只要我努力使其与htacces工作apache,我有点疯了。问题与URL重写和参数GET

我的网址正在寻找这样的:

http://example.com/controller/action/param1/value1/param2/value2

以下是htaccess前一个案子:

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine on 
    RewriteBase/
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
    RewriteCond %{REQUEST_URI} !^/(images|css|js)/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule ^(.*)$ index.php?$1 [L] 
</IfModule> 

但在某些情况下,我有一些额外的参数,例如用于Facebook认证:

http://example.com/controller/action?hauth.start=Facebook&hauth.time=1382665465

这种情况下不与以前htaccess工作。 GET变量没有任何进展。我怎么能解决这个问题?

回答

2

使用QSA(查询字符串追加)在规则标志

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine on 
    RewriteBase/
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
    RewriteCond %{REQUEST_URI} !^/(images|css|js)/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule ^(.*)$ index.php?$1 [L,QSA] 
</IfModule> 

QSA标志可确保同时增加新的查询参数保留现有的查询字符串。