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

Php .htaccess:GET变量在重写过程中丢失,php,.htaccess,mod-rewrite,apache2,Php,.htaccess,Mod Rewrite,Apache2,显然,我的.htaccess重写会吃掉我页面上的所有$\u GET-变量: 访问URL并在我的index.php文件中运行var\u dump($\u GET)时,我得到以下输出: array '/welcome/test' => string '' (length=0) 因此,没有$\u GET-数据可用,也没有迹象表明我的URL中存在getvar-变量 这是我的.htaccess: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{R

显然,我的.htaccess重写会吃掉我页面上的所有
$\u GET
-变量:

访问URL并在我的index.php文件中运行
var\u dump($\u GET)
时,我得到以下输出:

array
'/welcome/test' => string '' (length=0)
因此,没有
$\u GET
-数据可用,也没有迹象表明我的URL中存在
getvar
-变量

这是我的.htaccess:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
我应该改变什么以确保我的重写按预期进行,但变量仍然可以访问

您需要“QueryString Append”选项:

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

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

次要细节更改:

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

现在,所有路线都将在$\u GET[“route”]中可见。


重新启动发动机
重写规则^myapi(.*)。/my\u real\u api\u file.php?[QSA]
他为我做了这件事

您现在可以请求:

并将重定向到:


隐藏api代码非常有用。

谢谢!这似乎很有效。快速提示:要捕获
$\u GET
参数,似乎需要结束斜杠。有没有可能既吃蛋糕又吃蛋糕,即既能做欢迎/测试又能做avar=1&
welcome/test/?avar=1
?谢谢那件事我不确定。这可能是您缺少的变量名吗?经过测试,在没有引擎斜杠的情况下工作正常。用于jQueryUIAutoComplete,因为它总是附加
术语
参数
RewriteRule^service/autocomplete/(.+)$autocomplete.php?type=$2[QSA,L]
。从未看到您在回答中提到我,谢谢:)请注意,QSA,L[QSA,L]之间不能有空格
RewriteRule ^(.*)$ index.php?route=$1 [QSA,L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^myapi(.*) ./my_real_api_file.php? [QSA]
</IfModule>