You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel默认分页在Windows10虚拟机上筛选条件丢失问题排查

问题成因及解决方案

1. 分页链接未自动携带筛选参数

这是最常见的原因,Laravel默认的links()方法不会主动将当前请求的筛选查询参数追加到分页链接中,你本地运行正常大概率是巧合(比如临时缓存了筛选参数、本地代码额外做了参数兼容等)。
修复方法:
修改分页渲染代码,手动追加全部当前请求参数:

<div class="col-12">{{$customers->appends(request()->all())->links()}}</div>

如果只需要追加特定筛选参数,也可以指定参数:

{{$customers->appends(['keyword' => request('keyword'), 'subscription_id' => request('subscription_id')])->links()}}

2. Windows虚拟机Web服务器重写规则缺失QSA配置

你本地如果用的是Laravel自带的php artisan serve或集成环境,默认已经配置了正确的重写规则,而你虚拟机上自行配置的Apache/Nginx可能没有开启查询字符串追加配置,导致筛选参数被重写规则丢弃。
修复方法:

  • 若用Apache:确保public目录下的.htaccess文件的重写规则带有QSA标志:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
  • 若用Nginx:确保站点配置的location段保留了$query_string参数:
location / {
    try_files $uri $uri/ /index.php?$query_string;
}

3. 筛选请求方法与Session配置异常

如果你的筛选表单用的是POST提交,第一页可以拿到POST参数,但是分页跳转是GET请求,本身不会携带POST参数。如果本地正常是因为你把筛选条件存入了Session,那虚拟机上可能是Session写入权限不足导致参数丢失。
修复方法:

  • 优先将筛选表单的提交方法改为GET,让筛选参数直接暴露在URL中,逻辑更直观也更好维护。
  • 如果必须用POST存Session,给虚拟机上Laravel项目的storage目录开通读写权限:右键storage目录,给所属用户组赋予读写权限,同时确认.env中的SESSION_DOMAIN配置和你访问虚拟机站点的域名一致。

内容的提问来源于stack exchange,提问作者fael_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:45:02