> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify-mintlify-add-hello-world-quickstart-48843.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# AWS Route 53 与 CloudFront

> 使用 AWS 服务在自定义子路径下托管文档

要使用 AWS Route 53 和 CloudFront 将文档托管在自定义子路径（例如 `yoursite.com/docs`）下，你需要在 DNS 提供商处将记录指向你的 CloudFront 分配（Distribution）。

<div id="repository-structure">
  ## 仓库结构
</div>

必须在仓库中根据所选的子路径结构组织文档文件。例如，如果希望文档位于 `yoursite.com/docs`，则需创建一个 `docs/` 目录，并将所有文档文件放入其中。

<div id="high-level-overview">
  ## 高层概览
</div>

将流量路由到以下路径，并将缓存策略设置为 **CachingDisabled**：

* `/.well-known/acme-challenge/*` - 用于 Let's Encrypt 证书验证
* `/.well-known/vercel/*` - 用于域名验证
* `/docs/*` - 用于子路径路由
* `/docs/` - 用于子路径路由

将流量路由到以下路径，并将缓存策略设置为 **CachingEnabled**：

* `/mintlify-assets/_next/static/*`
* `Default (*)` - 你的网站首页

所有 Behaviors 的\*\*源请求策略（origin request policy）\*\*必须为 `AllViewerExceptHostHeader`。

<img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/all-behaviors.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=e30a262b0a0dfdf76532418240c549a3" alt="CloudFront “Behaviors” 页面包含 4 个行为：/docs/*、/docs、Default 和 /.well-known/*。" width="1603" height="365" data-path="images/cloudfront/all-behaviors.png" />

<div id="create-cloudfront-distribution">
  ## 创建 CloudFront 分配（Distribution）
</div>

1. 在 AWS 控制台中前往 [CloudFront](https://aws.amazon.com/cloudfront)。
2. 点击 **Create distribution**。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/create-distribution.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=1c5c069a77bd9a52a2c5d36015a4a646" alt="CloudFront 分配（Distributions）页面，突出显示“Create distribution”按钮。" width="3024" height="922" data-path="images/cloudfront/create-distribution.png" />
</Frame>

3. 在 Origin domain 中输入 `[SUBDOMAIN].mintlify.dev`，其中 `[SUBDOMAIN]` 是你项目的唯一子域名。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/origin-name.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=095d6f83a8e858368d8e668fb901fc98" alt="CloudFront “Create distribution” 页面，显示 “acme.mintlify.dev” 作为 Origin domain。" width="1495" height="1036" data-path="images/cloudfront/origin-name.png" />
</Frame>

4. 在 “Web Application Firewall (WAF)” 中启用安全防护（Enable security protections）。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/enable-security-protections.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=6caec69332d0eed09a66b9306e86e941" alt="Web Application Firewall (WAF) 选项，已选择 “Enable security protections”。" width="1482" height="877" data-path="images/cloudfront/enable-security-protections.png" />
</Frame>

5. 其余设置保持默认。
6. 点击 **Create distribution**。

<div id="add-default-origin">
  ## 添加默认 Origin
</div>

1. 创建发行版后，前往“Origins”选项卡。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/origins.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=cdf398b57c5b43dbf19d1049bc1cf3a4" alt="突出显示“Origins”选项卡的 CloudFront 发行版。" width="3024" height="1466" data-path="images/cloudfront/origins.png" />
</Frame>

2. 找到与你主域名对应的预发布环境 URL。具体取决于落地页的托管方式。例如，Mintlify 的预发布 URL 是 [mintlify-landing-page.vercel.app](https://mintlify-landing-page.vercel.app)。

<Info>
  如果你的落地页托管在 Webflow 上，请使用 Webflow 的预发布 URL，通常形如 `.webflow.io`。

  如果你使用 Vercel，请使用每个项目自带的 `.vercel.app` 域名。
</Info>

3. 新建一个 Origin，并将你的预发布 URL 填入“Origin domain”。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/default-origin.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=a48de02b7cda4d7676eab72ba7ade94c" alt="CloudFront 的“Create origin”页面，突出显示“Origin domain”输入框。" width="3024" height="1332" data-path="images/cloudfront/default-origin.png" />
</Frame>

此时你应当有两个 Origins：一个为 `[SUBDOMAIN].mintlify.app`，另一个为你的预发布 URL。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/final-origins.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=86d0dab4240f0a638ee4151d5563455f" alt="CloudFront 的“Origins”页面，包含两个 origins：一个用于 mintlify，另一个用于 mintlify-landing-page。" width="1230" height="690" data-path="images/cloudfront/final-origins.png" />
</Frame>

<div id="set-behaviors">
  ## 设置行为
</div>

CloudFront 中的行为（Behaviors）用于控制子路径逻辑。总体上，我们希望实现以下逻辑：

* **如果用户访问你的自定义子路径**，跳转至 `[SUBDOMAIN].mintlify.dev`。
* **如果用户访问其他任意页面**，跳转至当前的着陆页。

1. 进入你的 CloudFront 分配的 “Behaviors” 选项卡。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/behaviors.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=f887085273fa413c7a404911abc1a6fb" alt="高亮显示 CloudFront 的 “Behaviors” 选项卡。" width="3024" height="1384" data-path="images/cloudfront/behaviors.png" />
</Frame>

2. 点击 **Create behavior** 按钮，并创建以下行为。

<div id="well-known">
  ### `/.well-known/*`
</div>

为 Vercel 域名验证路径创建行为，**Path pattern** 设置为 `/.well-known/*`，并将 **Origin and origin groups** 指向你的文档 URL。

在“Cache policy”中选择 **CachingDisabled**，以确保这些验证请求不被缓存，直接透传。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/well-known-policy.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=549a7c386ded770c255f8f8289fe6b5f" alt="CloudFront “Create behavior” 页面，其中 “Path pattern” 为 “/.well-known/*”，且 “Origin and origin groups” 指向预发布环境的 URL。" width="1413" height="1098" data-path="images/cloudfront/well-known-policy.png" />
</Frame>

<Info>
  如果 `/.well-known/*` 过于宽泛，可以至少细分为 2 个行为以适配 Vercel：

  * `/.well-known/vercel/*` — 用于 Vercel 域名验证
  * `/.well-known/acme-challenge/*` — 用于 Let's Encrypt 证书验证
</Info>

<div id="your-custom-subpath">
  ### 自定义子路径
</div>

创建一个行为，将你选择的子路径填入 **Path pattern**（例如 `/docs`），并将 **Origin and origin groups** 指向 `.mintlify.dev` 的 URL（本例为 `acme.mintlify.dev`）。

* 将 “Cache policy” 设置为 **CachingOptimized**。
* 将 “Origin request policy” 设置为 **AllViewerExceptHostHeader**。
* 将 “Viewer Protocol Policy” 设置为 **Redirect HTTP to HTTPS**。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/behavior-1.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=fd3ebd9f13c5e37742917a83c9391667" alt="CloudFront “Create behavior” 页面，其中 “Path pattern” 为 “/docs/*”，且 “Origin and origin groups” 指向 acme.mintlify.dev URL。" width="1520" height="1117" data-path="images/cloudfront/behavior-1.png" />
</Frame>

<div id="your-custom-subpath-with-wildcard">
  ### 自定义带通配符的子路径
</div>

创建一个行为，将 **Path pattern** 设为你选定的子路径并在其后添加 `/*`，例如 `/docs/*`，并将 **Origin and origin groups** 指向同一个 `.mintlify.dev` URL。

除 **Path pattern** 外，其余设置应与基础子路径行为完全一致。

* 将 “Cache policy” 设置为 **CachingOptimized**。
* 将 “Origin request policy” 设置为 **AllViewerExceptHostHeader**。
* 将 “Viewer protocol policy” 设置为 **Redirect HTTP to HTTPS**。

<div id="mintlify-assets_nextstatic">
  ### `/mintlify-assets/_next/static/*`
</div>

* 将“Cache policy”设置为**CachingOptimized**
* 将“Origin request policy”设置为**AllViewerExceptHostHeader**
* 将“Viewer protocol policy”设置为**Redirect HTTP to HTTPS**

<div id="default">
  ### `Default (*)`
</div>

最后，我们将编辑 `Default (*)` 行为。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/default-behavior-1.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=bd401ab18e551c35f650b444498bce7a" alt="已选择“Default (*)”行为并突出显示“Edit”按钮的 CloudFront 分配。" width="3024" height="1406" data-path="images/cloudfront/default-behavior-1.png" />
</Frame>

1. 将默认行为的 **Origin and origin groups** 更改为预发布环境的 URL（此处为 `mintlify-landing-page.vercel.app`）。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/default-behavior-2.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=de5b42ed983413c3af664888dd941f7f" alt="CloudFront 的“Edit behavior”页面，突出显示了“Origin and origin groups”输入框。" width="3024" height="1298" data-path="images/cloudfront/default-behavior-2.png" />
</Frame>

2. 选择 **Save changes**。

<div id="check-behaviors-are-set-up-correctly">
  ### 检查行为配置是否正确
</div>

如果你按上述步骤进行配置，Behaviors 应如下所示：

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/all-behaviors.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=e30a262b0a0dfdf76532418240c549a3" alt="CloudFront “Behaviors” 页面，包含 4 个条目：/docs/*、/docs、Default 和 /.well-known/*。" width="1603" height="365" data-path="images/cloudfront/all-behaviors.png" />
</Frame>

<div id="preview-distribution">
  ## 预览分发
</div>

现在你可以前往“General”选项卡，访问“Distribution domain name”的 URL，测试分发是否已正确配置。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/preview-distribution.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=d53e8b23ea052af63c71427f296b9c7d" alt="CloudFront 的“General”选项卡，其中“Distribution domain name”的 URL 被高亮显示。" width="3024" height="1394" data-path="images/cloudfront/preview-distribution.png" />
</Frame>

所有页面应当都会指向你的主落地页；但如果在该 URL 后追加你选择的子路径，例如 `/docs`，你应会看到它跳转到你的 Mintlify 文档实例。

<div id="connect-with-route53">
  ## 连接 Route53
</div>

现在，我们要将 CloudFront 分发的功能接入到你的主域名。

<Note>
  本节你也可以参考 AWS 官方指南：[Configuring
  Amazon Route 53 to route traffic to a CloudFront
  distribution](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html#routing-to-cloudfront-distribution-config)
</Note>

1. 在 AWS 控制台中进入 [Route53](https://aws.amazon.com/route53)。
2. 打开主域名的“Hosted zone”。
3. 选择 **Create record**。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/route53-create-record.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=7f982aa32f6c9c742d99c4d2159e5a7c" alt="Route 53 “Records” 页面，已强调 “Create record” 按钮。" width="1540" height="1238" data-path="images/cloudfront/route53-create-record.png" />
</Frame>

4. 打开 `Alias`，然后将 **Route traffic to** 设置为 `Alias to CloudFront distribution`。

<Frame>
  <img src="https://mintcdn.com/mintlify-mintlify-add-hello-world-quickstart-48843/FYO7l_4g6ReiCSAk/images/cloudfront/create-record-alias.png?fit=max&auto=format&n=FYO7l_4g6ReiCSAk&q=85&s=1a243f0ba6cba3700589d3fa255af20b" alt="Route 53 “Create record” 页面，高亮显示 “Alias” 开关和 “Route traffic to” 菜单。" width="3024" height="1494" data-path="images/cloudfront/create-record-alias.png" />
</Frame>

5. 选择 **Create records**。

<Note>
  如果已存在 A 记录，可能需要先将其移除。
</Note>

你的文档现在已在主域名所选的子路径上上线。

<Note>
  配置 DNS 后，自定义子域名通常会在几分钟内生效。DNS 传播有时可能需要 1–4 小时，极少数情况下最多可达 48 小时。如果你的子域名未能立即生效，请先耐心等待，再进行排查。
</Note>
