直接安装spatie/laravel-sitemap即可,无需所谓“laravel sitemap_composer”;v7要求laravel 10+和php 8.1+,否则需降级至v6;必须执行vendor:publish发布配置,否则报错;生成sitemap后需检查robots.txt是否包含sitemap声明及app_url协议是否正确。

直接装 spatie/laravel-sitemap 就行,不需要单独“安装 Laravel Sitemap_Composer”——后者根本不是官方包名,搜不到、装不上,纯属误导。
确认 Laravel 版本和 PHP 版本是否兼容
这个包对环境有硬性要求:spatie/laravel-sitemap v7(当前最新稳定版)只支持 Laravel 10+ 和 PHP 8.1+;如果你用的是 Laravel 9 或 PHP 8.0,得降级到 v6。
- 查 Laravel 版本:
php artisan --version - 查 PHP 版本:
php -v - Laravel 9 + PHP 8.0 → 装
composer require spatie/laravel-sitemap:^6.4 - Laravel 10+ + PHP 8.1+ → 装
composer require spatie/laravel-sitemap(自动拉 v7)
发布配置并检查 config/sitemap.php 是否生成
装完不发布配置,后续生成 XML 时会报 Class 'Spatie\Sitemap\SitemapGenerator' not found 或路径找不到——因为默认配置没落地,Laravel 找不到生成规则。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行:
php artisan vendor:publish --provider="Spatie\Sitemap\SitemapServiceProvider" --tag=config - 检查项目根目录下是否出现
config/sitemap.php - 重点看
'cache' => true:开启后,sitemap.xml只在缓存失效时重生成,适合生产;开发调试建议先设为false
手动生成 XML 的两种常用方式及坑点
别一上来就丢进 Kernel.php 的调度里——本地跑不通,线上也容易超时或漏路由。
- 临时生成(调试用):
php artisan sitemap:generate,默认输出到public/sitemap.xml - 自定义生成(推荐):写一个命令类或控制器方法,手动控制 URL 来源,比如只加已发布文章:
$sitemap = SitemapGenerator::create('https://yoursite.com') ->hasCrawled(function (Url $url) { return $url->segment(1) === 'blog' && $url->segment(2) !== 'draft'; }) ->writeToFile(public_path('sitemap.xml')); - 常见错误:
Call to undefined method Spatie\Sitemap\SitemapGenerator::create()→ 没执行vendor:publish,配置缺失导致服务提供者未正确注册 - 生成后访问
/sitemap.xml404?确认文件真在public/下,且 Web 服务器(Nginx/Apache)没把.xml当作动态资源拦截
最常被跳过的其实是 robots.txt 里那行 Sitemap: /sitemap.xml。没加这句,搜索引擎根本不会主动找你的地图。还有,如果网站开了 HTTPS 但 APP_URL 写的是 http://,生成的 URL 全是错的,XML 直接无效。










