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

生产环境下无法访问Scramble生成的Laravel API文档路由docs/api

生产环境下无法访问Scramble生成的Laravel API文档路由docs/api

这种生产环境404的坑我之前踩过好几次,大概率是路由注册、服务器配置或者Scramble的环境设置没到位,给你列几个接地气的排查方向:

  • 先确认Scramble路由在生产环境是否真的存在
    登录你的生产服务器,跑一下php artisan route:list,看看输出里有没有/docs/api和/docs/api.json这两条路由。如果没有,那肯定是路由没注册:

    • 打开config/scramble.php,检查routes.enabled的值是不是true,别是写死了只在本地启用(比如有人会写成'enabled' => app()->isLocal())。建议改成'enabled' => env('SCRAMBLE_ENABLED', true),然后在生产环境的.env文件里加一行SCRAMBLE_ENABLED=true,这样更灵活。
  • 检查服务器的URL重写配置
    Laravel的路由依赖URL重写才能绕过index.php直接访问,比如用Nginx的话,得确认配置文件里有这段:

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    

    如果是Apache,要确保mod_rewrite模块已经开启,而且Laravel的public目录下的.htaccess文件存在,同时服务器配置(比如vhost里)允许使用.htaccess(设置AllowOverride All)。没开重写的话,除了首页其他路由都会404。

  • 清掉Laravel的缓存试试
    生产环境下Laravel会缓存路由、配置这些,要是你刚部署Scramble或者改了配置,缓存没清就会不生效。在服务器上依次跑这几个命令:

    php artisan route:clear
    php artisan config:clear
    php artisan cache:clear
    

    跑完再去访问文档页面试试,很多时候缓存就是罪魁祸首。

  • 确认Scramble是作为生产依赖安装的
    如果你之前是用composer require --dev dedoc/scramble安装的,那生产环境跑composer install --no-dev的时候,Scramble会被移除,自然就没路由了。打开项目的composer.json,看看dedoc/scramble是不是在require数组里,而不是require-dev。如果在dev里,就把它移到require里,然后在生产服务器重新跑composer install。

  • 检查服务器根目录指向
    最后再确认下,你的Web服务器(Nginx/Apache)的根目录是不是指向了Laravel项目的public文件夹?如果指向了项目根目录,那访问/docs/api会直接找根目录下的docs文件夹,肯定找不到,必须把根目录设为public,所有请求才会经过index.php处理路由。

备注:内容来源于stack exchange,提问作者nanashixd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:03:04