From c383440329d5d3d43acc9456a52388fdf3ba9261 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?AI=E4=B8=8D=E6=AD=A2=E8=AF=AD?= <12096460+jnMetaCode@users.noreply.github.com> Date: Fri, 31 Jul 2026 16:12:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(site):=20=E6=96=B0=E5=A2=9E=20404=20?= =?UTF-8?q?=E9=A1=B5=EF=BC=8C=E8=BF=94=E5=9B=9E=E7=9C=9F=E6=AD=A3=E7=9A=84?= =?UTF-8?q?=20HTTP=20404=20=E5=B9=B6=20noindex?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cloudflare Pages 在根目录存在 404.html 时会对未匹配路径返回真正的 HTTP 404,避免默认把首页当 SPA 兜底返回 200 导致 Google 把大量不存在 的 URL 判为首页重复页/软 404。页面加 noindex 防止自身被收录,导航用 绝对路径以适配任意深度的未命中路径。 --- site/build.mjs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/site/build.mjs b/site/build.mjs index d83ff3c..02c08b1 100644 --- a/site/build.mjs +++ b/site/build.mjs @@ -677,6 +677,29 @@ function build() { } } + // ---- 404 页 ---- + // Cloudflare Pages:根目录存在 404.html 时,任何未匹配到静态文件的路径都会 + // 返回它并带 **真正的 HTTP 404**(而非默认把首页当 SPA 兜底返回 200——那会让 + // Google 把无数不存在的 URL 当成首页的重复页/软 404)。noindex 防止 404 页本身被收录。 + // base 用 '/':这一个文件会被任意深度的路径命中,导航链接必须是绝对路径。 + writeFileSync(join(DIST, '404.html'), layout({ + lang: 'zh', base: '/', + title: '页面找不到 (404) · superpowers-zh', + desc: '你访问的页面不存在或已被移动。', + extraHead: '\n', + pageClean: '', pageFile: '', + body: `
+
404
+

这个页面找不到了

+

链接可能已过期或被移动。下面几个入口也许是你要找的:

+

+ 返回首页 + 浏览全部 Skill + 安装命令 +

+
`, + })); + // ---- SEO: robots.txt + sitemap.xml ---- writeFileSync(join(DIST, 'robots.txt'), 'User-agent: *\nAllow: /\n\nSitemap: ' + SITE_URL + '/sitemap.xml\n');