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

2022-08-30 18:46:15

显然,我的.htaccess重写吞噬了我页面上的所有变量:$_GET

当访问 URL http://192.168.1.1/welcome/test?getvar=true 并在我的索引.php文件中运行时,我得到以下输出:var_dump($_GET)

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

因此,没有可用的 -data,也没有来自我的 URL 的 -变量的符号。$_GETgetvar

这是我的.htaccess:

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

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


答案 1

您需要“QueryString Append”选项:

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

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


答案 2

微小的细节变化:

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

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

现在所有路线都将以 $_GET 可见[“路线”]


推荐