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

Laravel+Twilio浏览器通话获取Capability Token遇404错误求助

问题描述

运行一个Laravel+Twilio浏览器通话项目,部署在WordPress站点的子目录中,目前页面可正常访问,但右侧状态区域显示:

Requesting Capability Token...
Could not get a token from server!

开发者工具中发现请求路径/twilio-audio-call-laravel/token返回404错误,修改目录名称后问题仍存在。当前web.php路由配置如下:

Route::get('/index',[Controller::class, 'index']);
Route::get('/',[Controller::class, 'index']);
Route::post('/voice',[Controller::class, 'voice']);
Route::post('/token',[Controller::class, 'token']);

作为Laravel和Twilio新手,需要实现WordPress页面呼叫按钮+客服接听页面的浏览器通话功能,不确定是目录问题还是其他原因导致404,寻求解决方法。


解决步骤

1. 给Laravel路由添加子目录前缀

由于项目部署在WordPress的twilio-audio-call-laravel子目录下,需要给所有路由加上对应前缀,确保请求路径匹配。修改routes/web.php:

Route::group(['prefix' => 'twilio-audio-call-laravel'], function () {
    Route::get('/index',[Controller::class, 'index']);
    Route::get('/',[Controller::class, 'index']);
    Route::post('/voice',[Controller::class, 'voice']);
    Route::post('/token',[Controller::class, 'token']);
});

修改后,/token路由会变成/twilio-audio-call-laravel/token,和前端请求路径一致。

2. 调整服务器重写规则

Apache环境

确保Laravel项目根目录的.htaccess文件正确处理子目录重写,内容如下:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # 处理授权头
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # 移除末尾斜杠
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # 转发请求到前端控制器
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Nginx环境

在Nginx配置文件中添加子目录的路由规则:

location /twilio-audio-call-laravel {
    try_files $uri $uri/ /twilio-audio-call-laravel/index.php?$query_string;
}

3. 验证前端请求路径

找到项目中请求Token的JS代码,确认请求URL为/twilio-audio-call-laravel/token,如果之前是相对路径或错误的绝对路径,需修正为匹配前缀后的路径。

4. 刷新Laravel路由缓存

  • 本地环境:运行php artisan route:list查看路由列表,确认POST /twilio-audio-call-laravel/token存在。
  • 生产环境:执行php artisan route:clear清除路由缓存,确保新路由生效。

5. 避免WordPress路由干扰

WordPress的固定链接规则可能拦截Laravel子目录的请求,可按以下方式处理:

  1. 临时将WordPress固定链接设置为「朴素」模式测试。
  2. 若问题解决,修改WordPress根目录的.htaccess,在开头添加规则让WordPress跳过Laravel子目录的请求:
RewriteCond %{REQUEST_URI} ^/twilio-audio-call-laravel/
RewriteRule ^ - [L]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:45:26