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

Laravel Passport部署子目录后视图及增删改查功能异常求助

解决Laravel Passport部署到子目录的功能失效问题

我之前踩过一模一样的坑!把Laravel项目放到子目录后,Passport的视图加载、客户端增删改全罢工,折腾了好几天才捋顺所有需要调整的地方,给你列几个核心步骤:

1. 校准应用基础配置与Passport路由前缀

先确认.env里的APP_URL是完整的子目录地址:

APP_URL=http://my-site.com/xyz

同步config/app.php里的URL配置(避免缓存导致的不一致):

'url' => env('APP_URL', 'http://my-site.com/xyz'),

关键是Passport的路由配置,不能只改passport.php,要在AuthServiceProvider的boot方法里指定带目录的完整前缀:

public function boot()
{
    $this->registerPolicies();

    // 必须包含子目录前缀
    Passport::routes(null, ['prefix' => 'xyz/oauth']);
}

这样所有Passport的OAuth路由都会自动带上xyz/oauth前缀,和子目录匹配。

2. 修复Passport视图的静态资源路径

Passport自带的视图默认从根目录加载CSS/JS,部署到子目录后会找不到资源。先发布视图到本地:

php artisan vendor:publish --tag=passport-views

然后打开resources/views/vendor/passport下的所有视图文件,比如clients/index.blade.php,把资源引用加上子目录前缀:

<!-- 原路径 -->
<link rel="stylesheet" href="{{ asset('vendor/passport/css/app.css') }}">
<!-- 修改后 -->
<link rel="stylesheet" href="{{ asset('xyz/vendor/passport/css/app.css') }}">

JS文件的引用也要做同样修改,确保所有静态资源都能正确加载。

3. 调整前端组件的API请求路径

你已经改了axios的baseURL,但要确保Passport的Vue组件里的请求路径和它匹配。比如打开resources/js/components/passport/Clients.vue,检查请求URL:

// 如果已经设置了axios.defaults.baseURL='http://my-site.com/xyz'
axios.get('/oauth/clients') // 这样就会自动拼接成 http://my-site.com/xyz/oauth/clients

如果baseURL设置没生效,也可以直接写完整路径:

axios.get('/xyz/oauth/clients')

注意要把baseURL的设置放在所有组件加载之前,比如放在resources/js/bootstrap.js里。

4. 清理缓存确保配置生效

最后一定要清掉路由和配置缓存,很多时候修改了配置但缓存没更新导致不生效:

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

生产环境下重新生成缓存:

php artisan config:cache
php artisan route:cache

额外检查:服务器配置(以Nginx为例)

如果以上步骤都做了还是有问题,要确保服务器把子目录的请求转发给Laravel的入口文件:

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

这样所有/xyz开头的请求都会交给Laravel处理,不会返回404。

我当时就是漏了视图资源路径和服务器配置,折腾了好久才搞定,按这些步骤来应该能解决你的问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:45:11