.htaccess重定向丢失GET变量

时间:2013-08-21 15:58:56

标签: php .htaccess

这是我为我的MVC设置的htaccess。

  <IfModule mod_rewrite.c>
        RewriteEngine On  
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
    </IfModule>

因此,对 localhost / users / 的任何请求都将重定向到 localhost?url = users /

但是当网址中有一些获取数据时,例如: localhost / users /?msg = hello

我错过了$ _GET ['url']中的?msg = hello 。是否可以重定向到 localhost / users / msg = hello /

之类的内容

2 个答案:

答案 0 :(得分:4)

使用"QueryString Append"选项,

RewriteRule ^(.*)$ index.php?route=/$1 [QSA,L]

参考:.htaccess: GET variables are lost in rewrite

答案 1 :(得分:0)

你要做的事情会非常复杂。作为替代方案,您可以尝试以下方法:

RewriteRule ^(.*)$ index.php/$1 [PT,L]

使用该规则时,您可以通过$ _SERVER ['REQUEST_URI']访问该网址。

您丢失get参数的原因是服务器使用两个“?”创建URL。例如:

http://localhost/?url=users/?msg=123