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

如何强制Laravel框架全站使用HTTPS协议?

解决Laravel全站HTTPS下分页(jscroll)仍使用HTTP的问题

你已经搞定了静态资源和表单的HTTPS适配,但Laravel分页生成的URL还在走HTTP,这确实是个容易踩的小坑。下面给你几个逐步排查解决的方案:

一、全局强制Laravel生成HTTPS URL

这是最根本的解决思路,能让所有框架生成的URL(包括分页、路由、asset资源等)默认走HTTPS:

  1. 修正.env配置
    打开项目根目录的.env文件,把APP_URL改成你的HTTPS域名:

    APP_URL=https://your-domain.com
    

    修改完记得执行php artisan config:cache清空配置缓存,确保新配置生效。

  2. 在服务提供者中强制协议
    打开app/Providers/AppServiceProvider.php,在boot方法里添加强制HTTPS的逻辑:

    use Illuminate\Support\Facades\URL;
    
    public function boot()
    {
        // 仅在生产环境强制HTTPS,本地开发可以保留HTTP
        if (config('app.env') === 'production') {
            URL::forceScheme('https');
        }
    }
    

    这样不管请求的原始协议是什么,Laravel生成的所有URL都会自动用HTTPS。

  3. 适配负载均衡/反向代理场景
    如果你的站点部署在Nginx、Apache或者云服务商的负载均衡后面,Laravel可能识别不到真实的客户端请求协议(因为代理转发给后端的是HTTP请求)。这时需要配置TrustProxies中间件:
    打开app/Http/Middleware/TrustProxies.php,更新代理信任配置:

    protected $proxies = '*'; // 也可以指定具体的代理IP,更安全
    protected $headers = Request::HEADER_X_FORWARDED_ALL;
    

    配置后Laravel就能正确识别客户端发起的是HTTPS请求,生成对应协议的URL。

二、针对分页实例单独强制HTTPS

如果全局设置后分页URL还是有问题,可以直接在分页代码里强制指定协议:
修改你的分页输出代码,在appends之后调用setScheme方法:

{!! $plugins->appends(['tag' => $param2, 'search' => $param1])->setScheme('https')->links() !!}

这个方法会直接让当前分页实例生成的所有链接都使用HTTPS协议。

三、检查jscroll的配置逻辑

最后确认jscroll是否正确读取了Laravel生成的分页链接。通常jscroll会自动获取分页按钮的href属性,只要Laravel生成的链接是HTTPS的,它就会正常发起HTTPS请求。如果jscroll是手动拼接URL的,记得把拼接的地址改成HTTPS格式。

按上面的步骤试一遍,应该就能解决分页的HTTP跳转问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:21:18