Settings > General 中的 Site URL 是站点的公开地址。邮件和插件中的链接、站点地图、robots.txt、hreflang 链接、社交图片 URL,以及 SEO 面板中设置的规范链接(canonical link)都会使用它。请通过 Change domain 对话框修改它,该对话框会在切换之前检查新域名是否能提供该站点。
只有管理员可以更改域名。
开始之前
请先将新域名指向站点。EmDash 在切换时会检查该域名,因此该域名必须已经通过 https:// 提供该站点。
- Cloudflare Workers: 在 Cloudflare 控制台的 Workers & Pages 中打开你的 Worker,进入 Domains 标签页并添加该域名。Wrangler 配置请参阅自定义域名。
- Node.js 及其他主机: 为该域名创建 DNS 记录和证书,并将其路由到提供当前地址的同一台服务器。
在浏览器中打开 https://<新域名>/_emdash/admin。如果看到 EmDash 登录页面,说明域名已就绪。
如果站点设置了 siteUrl、EMDASH_SITE_URL 或 SITE_URL,邮件和插件中的链接将使用该地址而不是 Site URL,Settings > General 中也会注明这一点。请修改配置并重新部署,以便同时迁移这些链接。
更改域名
-
打开 Settings > General,选择 Site URL 旁边的 Change domain。
-
输入新域名,例如
www.example.com。也可以输入完整的源(origin),例如https://www.example.com。不接受路径和端口。 -
选择 Check and switch。
EmDash 会向
https://www.example.com/_emdash/api/site/domain-proof请求一次性验证码。验证码匹配后,它会将https://www.example.com存储为 Site URL 并关闭对话框。
Settings > General 中尚未保存的更改在切换后仍保留在表单中。请像往常一样保存它们。
新地址何时生效
- 邮件: 登录、邀请、自助注册、账号恢复和评论通知邮件会立即链接到新地址。
- 插件:
ctx.site.url会在服务器重启后更改;在 Cloudflare Workers 上,则会在新的 isolate 启动后更改。 - 站点地图和
robots.txt: 浏览器和共享缓存最多可能保留旧版本一小时(站点地图)或一天(robots.txt)。
在你从主机上移除旧地址之前,它会继续提供该站点。若要将访客从旧地址引导到新地址,请在主机或 DNS 提供商处添加重定向。
迁移后登录
通行密钥只能在创建它的地址上使用。迁移后,在旧地址创建的通行密钥无法在新地址使用。请在仍登录旧地址时,把你自己的登录迁移到新地址:
-
在 Settings > General 中,选择 Site URL 下方的 **Continue on www.example.com**。当你登录的地址不是 Site URL 时,会出现该按钮。如果已配置
siteUrl,则改为与该地址比较。 -
在新地址打开的登录页面上选择 Continue。该链接只能使用一次,并在 5 分钟后失效。
-
Settings > Security 会打开并显示通行密钥表单。选择 Register Passkey,为新地址创建通行密钥。
此操作无需邮件即可完成。当邮件已设置时,其他用户可以通过魔法链接在新地址登录,然后在那里添加通行密钥。在此之前,只要旧地址仍提供该站点,他们就继续在旧地址登录。
通知其他用户
当邮件已设置,并且用户使用通行密钥登录时,管理员可以告知其他所有用户现在应在哪里登录:
-
在 Settings > General 中,选择 Site URL 下方的 Email users。
-
选择 Send emails。
每个账号未被禁用的用户(你本人除外)都会收到一封邮件,告知站点已迁移到已配置的 siteUrl(未设置时为 Site URL),并附带指向该地址登录页面的按钮。该邮件不会让任何人自动登录。邮件会说明旧地址的通行密钥在新地址上无法使用,用户需要先通过邮件链接登录。随后会显示一条消息,说明已发送多少封邮件,以及邮件服务商拒收了多少封。每个站点每小时最多可发送 3 次这类邮件。
如果检查失败
对话框会显示检查失败的原因:
www.example.com does not resolve to a public address: 该域名还没有公开的 DNS 记录,或指向了私有网络。请完成 DNS 设置后重试。Could not reach https://www.example.com: 请求超时或连接失败,例如证书尚未就绪。请等待几分钟后重试。https://example.com redirects to https://www.example.com. Enter that address instead.: 该域名发生了重定向。请输入它重定向到的地址。https://www.example.com does not serve this site yet: 该域名有响应,但返回的不是本站点。它可能仍指向之前的主机,或者前面有 Cloudflare Access 之类的登录页面。在 Cloudflare 上,请在 Worker 的 Domains 标签页中将该域名添加为 Custom Domain。路由(route)对该检查无效:Cloudflare 不会为 Worker 向同一区域内自身路由发送的请求运行 Worker。
不经检查直接使用地址
检查失败时,对话框会提供 Use … anyway。它会不经检查直接存储该地址。当站点无法从互联网访问时使用它,例如在 http://localhost:4321 进行本地开发,或使用位于登录页面之后的预发布域名。
站点地图和搜索元数据会按输入的原样使用所存储的地址,包括 https://example.com/blog 这样的路径。邮件和插件只使用其源(origin),并且仅在它使用 https://,或主机为 localhost、127.0.0.1 或 [::1] 时才会使用。否则,它们会继续使用站点最初设置时所用的地址。
选择之前请仔细检查该地址。没有任何机制确认它能访问到该站点。