把真实域名写进代码
M7 拿到域名、联系方式与预约链接后,把清单上的待提供项变成代码默认值并跑完首推前全链
从「清单」到「默认值」
上一轮我把 M7 需要的东西列成了一张待提供清单,每一项都写清「怎么获取」。
这一轮用户一次性补齐:子域名前缀和 Pages 项目名都用 website、Cal.com 预约链接、
Cloudflare Pages 已按推荐 A 方案连通 GitHub 仓库、本机代理端口 3067。
清单上的 ⬜ 该变成代码里的默认值了。
一处改动,五个地方生效
astro.config.mjs 的 site 改成读 process.env.PUBLIC_SITE_URL,默认
https://website.85138175.xyz。这一处同时决定 canonical、sitemap、OG、RSS、JSON Feed
的绝对地址——所以改完不用到处找硬编码。顺手把 Seo.astro、privacy.astro、
robots.txt、作品 url、.env.example 里的占位域名 atelier.example.com 全清掉。
这里有个不显眼的坑:vite 在项目根不可解析(pnpm 严格隔离),所以不能用
loadEnv;而且 config 在 Vite 加载 .env 之前执行,本来也读不到 import.meta.env。
用 process.env 是唯一正确的选择。
三个「看起来没问题」的地方
微信号不是 URL。 contact_channels 原本强制 {label, url},组件渲染成
<a href>。把 dianfeng1998 塞进去会造出一条死链。改成支持 value 纯文本字段、
用 <code> 展示;也刻意不加「一键复制」按钮——那需要客户端 JS,会破坏首屏零脚本
(E7) 这个从 M1 守到现在的约束。取舍要明说,不是偷懒。
CSP 的「首方」必须和 site 同源。 csp-check.mjs 的 originOf() 原来拿占位域名
当 base 解析绝对 URL。产物里一旦出现指向真实域名的链接,就会被误判成外域、写进
form-action / script-src 白名单——一个静默放宽的策略。给两个 CSP 脚本加
SELF_ORIGIN,和 site 用同一个环境变量,首方相对/绝对 URL 才都归类正确。
冒烟测试要能发现「域名没换」。 给 deploy-smoke.mjs 加一条 robots.txt
断言,检查它指向 website.85138175.xyz 的 sitemap。否则这类回归只能靠人眼。
首推前的全链复验
pnpm run quality(build + CSP + check 61 files 0/0/0 + E4 三条 + 24 单测 +
CI 自检 23 项)、pnpm run quality:browser(LCP 1004ms / Lighthouse 100×4 /
axe 0 / Playwright 7 / 拔动态层 5 页可读)、pnpm deploy:smoke(11 页 + feed +
sitemap + robots + 真 CSP 头)全绿。产物审计确认 canonical/OG/RSS/Feed/sitemap
都是真实域名、无占位残留,/contact 有真实邮箱、微信、预约链接且微信无死链。
清单文档与近况页也同步成 ✅。接下来就是把它推到远端、触发 GitHub Actions 与 Cloudflare Pages 的首次真实构建——那是另一个「纸上通过」与「真跑过」的差距, 等它真的绿了再说。
相关记录
- 让门禁在任何机器上都能跑 · 2026/11/12