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

Laravel8下joedixon/laravel-translation包更新翻译报404错误排查

故障原因排查

核心问题

你的Laravel项目部署在域名子路径/project_name下,但扩展包生成更新、新增翻译操作的请求URL时,未带上该子路径前缀,导致请求命中了根域名下不存在的路由,触发404错误。

具体触发点

  • 项目.env配置文件中的APP_URL参数未配置子路径后缀,默认值为http://localhost,Laravel全局生成路由时以此参数为根路径,导致route('languages.translations.update')等路由生成的地址缺少/project_name前缀。
  • 该扩展包的翻译更新、新增操作通过前端AJAX发起,直接使用了路由生成的绝对路径,未适配子目录部署场景。
解决方案

方法1:修正APP_URL配置(优先尝试)

编辑项目根目录下的.env文件,将APP_URL参数修改为项目实际访问地址:

APP_URL=http://localhost/project_name

修改后执行缓存清理命令:

php artisan config:clear
php artisan route:clear
php artisan view:clear

刷新页面后重新测试翻译更新操作即可。

方法2:手动覆盖扩展包路由(方法1无效时使用)

如果扩展包未遵循Laravel路由生成规则,可在项目routes/web.php中手动注册带前缀的扩展包路由,覆盖原有路由定义:

Route::group([
    'prefix' => 'project_name', // 替换为实际子目录前缀
    'namespace' => 'JoeDixon\\Translation\\Http\\Controllers'
], function ($router) {
    $router->get(config('translation.ui_url'), 'LanguageController@index')->name('languages.index');
    $router->get(config('translation.ui_url').'/create', 'LanguageController@create')->name('languages.create');
    $router->post(config('translation.ui_url'), 'LanguageController@store')->name('languages.store');
    $router->get(config('translation.ui_url').'/{language}/translations', 'LanguageTranslationController@index')->name('languages.translations.index');
    $router->post(config('translation.ui_url').'/{language}', 'LanguageTranslationController@update')->name('languages.translations.update');
    $router->get(config('translation.ui_url').'/{language}/translations/create', 'LanguageTranslationController@create')->name('languages.translations.create');
    $router->post(config('translation.ui_url').'/{language}/translations', 'LanguageTranslationController@store')->name('languages.translations.store');
});

注册完成后执行上述缓存清理命令即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:09:02