运营
SEO 表面
每个公共路由都会发出每页 SEO 块 — 标题、描述、规范 URL、Open Graph 卡片、Twitter 卡片和 JSON-LD 结构化数据 —
无需在 React 层中进行任何每页工作。
运行白标签安装的买家继承相同的机制;在 /settings/branding 中替换品牌名称,元块会跟随。
开箱即用的内容
- Per-route titles + descriptions. 定义在
App\Support\SeoMeta::ROUTE_DEFAULTS中。像{brand}这样的 token 在渲染时插值,因此重命名的安装永远不会将源产品名称泄漏到元块中。 - Canonical URLs. 每个页面通过
<link rel="canonical">声明其规范 URL,锚定在config('app.url')+ 路由路径上。搜索引擎永远不必猜测哪个变体是主版本。 - Open Graph + Twitter cards. 共享社交预览覆盖
og:type、og:site_name、og:title、og:description、og:url、og:image,以及twitter:card="summary_large_image"伴侣。OG 图像默认为public/og-image.png;在那里放入您自己的以覆盖。 - JSON-LD structured data. 三个块层叠在标准元数据之上:
- Organization — 每个页面。品牌名称、规范 URL 和(如果存在)徽标。
- SoftwareApplication — 仅首页。让 Google 的丰富结果选择器将我们呈现为带有优惠 + 免费层价格的应用。
- FAQPage — 仅首页,来自管理员在设置 → 营销中编辑的营销 FAQ。编辑自动流转到结构化数据 — Google 的丰富结果选择器直接在匹配查询的搜索片段下呈现 Q+A。
- /sitemap.xml — 每个营销页面、每个文档 slug 和每个发布的变更日志版本。在控制器级别缓存 1 小时,因此新的变更日志条目会在缓存窗口内显示。
- /robots.txt — 允许公共表面;禁止
/admin、/app、/api/、/settings和认证流程;引用站点地图,以便爬虫在首次嗅探时找到它。
为新路由添加 SEO
添加新公共页面时要触及的两个地方:
- 在
SeoMeta::ROUTE_DEFAULTS中注册默认值,带有title/description/path。对任何应出现安装名称的地方使用{brand}。 - 在控制器中,将 SEO 有效负载传递给 Inertia:
return Inertia::render('your/page', [ // ... your props 'seo' => SeoMeta::for('your-route-key'), ]);
Inertia 根布局(resources/views/app.blade.php)读取 props.seo 并自动发出元块。
无需每页 Blade 工作。
需要按行变化描述(例如每个版本的变更日志页面)?传递覆盖:
'seo' => SeoMeta::for('changelog.show', [
'title' => "v1.1.0 — what's new in {brand}",
'description' => "Released " . $entry->released_at_human . " — " . $entry->summary,
])
自定义 Open Graph 图像
在 public/og-image.png 放置 1200×630 PNG(或 JPG)。
运行自己安装的买家可以通过 SFTP 或部署主机的文件管理器直接交换文件。
SeoMeta 解析器在渲染时检查文件是否存在;如果不存在,
元块静默省略 og:image 和 twitter:image,而不是指向 404。
站点地图缓存
站点地图在 seo:sitemap.xml 下缓存 1 小时。
要在发布期待已久的变更日志条目后强制刷新:
php artisan tinker --execute 'cache()->forget("seo:sitemap.xml");'
繁忙安装上的爬虫流量否则将是 O(crawl rate) 数据库命中; 缓存将其平铺为每个节点每小时一次重建。
排除的路由
| 路由前缀 | 为什么排除 |
|---|---|
/admin/* | 平台管理员表面。租户感知数据。 |
/app/* | 工作区仪表板。需要认证,工作区范围。 |
/api/* | API 表面 — JSON,不适合爬虫。 |
/login, /register, password reset | 认证流程 — 无 SEO 价值,没有供爬虫索引的内容。 |
/settings/* | 需要认证的用户/平台设置。 |