

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为 Amplify 应用程序设置重定向和重写
<a name="redirects"></a>

重定向使 Web 服务器能够将导航从一个网址重新路由到另一个网址。使用重定向的常见原因包括：自定义网址的外观、避开失效链接、移动应用程序或站点的托管位置而不更改其地址以及将所请求的网址更改为 Web 应用程序需要的形式。

## 了解 Amplify 支持的重定向
<a name="types-of-redirects"></a>

Amplify 在控制台中支持以下重定向类型。

 **永久重定向 (301)** 

301 重定向旨在持续更改 Web 地址的目标。原始地址的搜索引擎排名历史记录应用于新目标地址。重定向发生在客户端上，因此浏览器导航栏在重定向后显示目标地址。

使用 301 重定向的常见原因包括：
+ 为在页面地址更改时避开失效链接。
+ 为在用户在地址中出现可预测拼写错误时避开失效链接。

 **临时重定向 (302)** 

302 重定向旨在临时更改 Web 地址的目标。原始地址的搜索引擎排名历史记录不应用于新目标地址。重定向发生在客户端上，因此浏览器导航栏在重定向后显示目标地址。

使用 302 重定向的常见原因包括：
+ 为提供绕道目标，同时对原始地址进行修复。
+ 提供用于 A/B 比较用户界面的测试页面。
**注意**  
如果您的应用程序返回意外的 302 响应，则该错误很可能是由于您对应用程序的重定向和自定义标头配置所做的更改所致。要解决此问题，请验证您的自定义标头是否有效，然后为您的应用程序重新启用默认 404 重写规则。

 **重写 (200)** 

200 重定向（重写）旨在显示来自目标地址的内容，就像它是从原始地址提供的一样。搜索引擎排名历史记录继续应用于原始地址。重定向发生在服务器端上，因此浏览器导航栏在重定向后显示原始地址。使用 200 重定向的常见原因包括：
+ 为将整个站点重定向到新的托管位置而不更改站点的地址。
+ 为将流向单页 Web 应用程序 (SPA) 的所有流量重定向到其 index.html 页面以由客户端路由器功能处理。

 **找不到 (404)** 

当请求指向的地址不存在时，会发生 404 重定向。将显示目标页面 404，而不显示请求的页面。发生 404 重定向的常见原因包括：
+ 为在用户输入错误网址时避开失效链接消息。
+ 为使对不存在的 Web 应用程序页面的请求指向其 index.html 页面以由客户端路由器功能处理。

## 了解重定向顺序
<a name="order-of-redirects"></a>

重定向按照从列表顶部向下的顺序应用。确保您的排序具有您想要的效果。例如，以下重定向顺序会导致对 */docs/* 下的给定路径的所有请求都重定向到 */documents/* 下的同一路径，但 */docs/specific-filename.html* 除外，它会重定向到 */documents/different-filename.html*：

```
/docs/specific-filename.html /documents/different-filename.html 301
/docs/<*> /documents/<*>
```

以下重定向顺序会忽略 *specific-filename.html* 到 *different-filename.html* 的重定向：

```
/docs/<*> /documents/<*>
/docs/specific-filename.html /documents/different-filename.html 301
```

## 了解 Amplify 如何转发查询参数
<a name="query-parameters"></a>

您可以使用查询参数来更好地控制网址匹配。Amplify 会将所有查询参数转发到 301 和 302 重定向的目标路径，但以下情况除外：
+ 如果原始地址包含设置为特定值的查询字符串，则 Amplify 不会转发查询参数。在这种情况下，重定向仅适用于向具有指定查询值的目标网址发出的请求。
+ 如果匹配规则的目标地址包含查询参数，则不会转发查询参数。例如，如果重定向的目标地址为 `https://example-target.com?q=someParam`，则不会传递查询参数。