无法获取全部GET参数求助:.htaccess规则仅使page参数生效
解决.htaccess重写后丢失GET参数的问题
这问题我之前调试重写规则时也踩过坑!你的规则里缺少了**QSA(Query String Append)**标志,这就是原URL里的dept和test参数没被传递过去的核心原因。
原因分析
默认情况下,Apache的mod_rewrite执行重写时,会用你指定的新查询字符串(也就是?page=$1)直接替换原URL里的所有查询参数,不会自动合并两者。所以原有的dept=ABS&test=23就被直接丢弃了。
修改后的规则
只需要在RewriteRule的标志部分加上QSA即可:
RewriteCond %{REQUEST_URI} ^/dashboard-detailed-view-(.*)$ RewriteRule ^dashboard-detailed-view-(.*)$ /rat/view/dashboard-detailed-view.php?page=$1 [L,QSA]
效果验证
修改后访问http://localhost/dashboard-detailed-view-absence?dept=ABS&test=23,执行print_r($_GET)就能得到完整的参数数组:
Array ( [page] => absence [dept] => ABS [test] => 23 )
额外提醒
- 确保你的Apache服务器已经启用了mod_rewrite模块
- 确认网站根目录的
.htaccess文件有足够权限,并且Apache配置里的AllowOverride设置为All(至少包含FileInfo),这样重写规则才能正常生效
内容的提问来源于stack exchange,提问作者ManiMuthuPandi
相关产品推荐
相关产品推荐

