Laravel 9使用laravel-sitemap报错:No hint path defined for [sitemap]
问题:Laravel部署后生成站点地图报错“No hint path defined for [sitemap]”
本地环境使用laravel-sitemap扩展生成sitemap.xml正常,但部署到远程虚拟主机时,出现错误提示:No hint path defined for [sitemap]。
相关代码:
控制器代码
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Spatie\Sitemap\Sitemap; use Spatie\Sitemap\Tags\Url; use App\Models\Post; class SiteMapController extends Controller { /** * generates the sitemap xml file */ public function generate() { $sitemap = Sitemap::create(); $post = Post::all(); foreach ($post as $post) { $sitemap->add(Url::create("/post/{$post->slug}")); } $sitemap->writeToFile(public_path('sitemap.xml')); return redirect()->route('admin.dashboard')->withSuccess(__('sitemap.updated')); } }
路由代码
Route::get('generate-sitemap', 'SiteMapController@generate');
解决方案
该错误与laravel-sitemap扩展本身无关,是Laravel本地化翻译系统的问题,根源是__('sitemap.updated')这个翻译调用找不到对应的翻译文件或路径。
1. 检查翻译文件结构
确保项目resources/lang目录下存在对应语言的翻译文件:
- 比如使用中文的话,需要创建
resources/lang/zh/sitemap.php(或zh_CN,取决于你的Locale设置),文件内容示例:
<?php return [ 'updated' => '站点地图已成功更新', ];
2. 确认翻译文件已部署到远程主机
部署时容易忽略resources/lang目录下的文件,登录远程主机检查对应路径是否存在sitemap.php文件,若缺失则上传该文件。
3. 验证Locale配置
检查项目根目录的.env文件,确认APP_LOCALE的值和你的翻译文件目录匹配,比如:
APP_LOCALE=zh
4. 临时替代方案(快速解决)
如果不想处理翻译系统的问题,可以直接将翻译函数替换为字符串:
把控制器中的:
return redirect()->route('admin.dashboard')->withSuccess(__('sitemap.updated'));
修改为:
return redirect()->route('admin.dashboard')->withSuccess('站点地图已成功更新');
内容的提问来源于stack exchange,提问作者Mahdi
相关产品推荐
相关产品推荐

