.htaccess:GET变量在重写时丢失

时间:2011-07-11 20:52:55

标签: php .htaccess mod-rewrite apache2

显然,我的.htaccess重写会占用我页面上的所有$_GET - 变量:

在我的index.php文件中访问URL http://192.168.1.1/welcome/test?getvar=true并运行var_dump($_GET)时,我得到了这个输出:

array
'/welcome/test' => string '' (length=0)

所以没有$_GET - 数据可用且我的网址中没有getvar - 变量的标志。

这是我的.htaccess:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

我应该更改什么以确保我的重写按预期工作但$_GET - 变量仍然可以访问?

4 个答案:

答案 0 :(得分:55)

您需要“QueryString附加”选项:

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

编辑:添加了@ DonSeba的贡献,因为它是正确的。

答案 1 :(得分:6)

细微的细节变化:

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

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

现在所有路线都在$ _GET [“route”]

中可见

答案 2 :(得分:1)

RewriteRule ^(.*)?(.*)$ index.php?/$1&$2 [L]

答案 3 :(得分:0)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^myapi(.*) ./my_real_api_file.php? [QSA]
</IfModule>

为我做了诀窍。

您现在可以请求:http://www.mydomain.com/myapi?foo=xy&bar=ab

并将重定向到:http://www.mydomain.com/my_real_api_file.php?foo=xy&bar=ab

隐藏你的api代码非常有用。