

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 Amplify 應用程式的重新導向和重寫
<a name="redirects"></a>

重新導向可讓 Web 伺服器將導覽從一個 URL 重新路由到另一個 URL。使用重新導向的常見原因包括自訂 URL 的外觀、避免連結中斷、在不變更其地址的情況下移動應用程式或網站的託管位置，以及將請求的 URL 變更為 Web 應用程式所需的格式。

## 了解 Amplify 支援的重新導向
<a name="types-of-redirects"></a>

Amplify 支援主控台中的下列重新導向類型。

 **永久重新導向 (301)** 

301 重新導向預期用於網址目的地的持續變更。原始地址的搜尋引擎排名歷史記錄會套用到新目的地地址。重新導向會在用戶端上進行，因此瀏覽器導覽列會在重新導向後顯示目的地地址。

使用 301 重新導向的常見原因包括：
+ 為了避免頁面的地址變更時造成連結中斷。
+ 為了避免當使用者在地址中提供了可預測的錯字時造成連結中斷。

 **暫時重新導向 (302)** 

302 重新導向預期用於網址目的地的暫時變更。原始地址的搜尋引擎排名歷史記錄不適用於新的目的地地址。重新導向會在用戶端上進行，因此瀏覽器導覽列會在重新導向後顯示目的地地址。

使用 302 重新導向的常見原因包括：
+ 為了在對原始地址進行修復時提供繞道目的地。
+ 提供使用者介面 A/B 比較的測試頁面。
**注意**  
如果您的應用程式傳回非預期的 302 回應，則錯誤可能是因為您對應用程式的重新導向和自訂標頭組態所做的變更所造成。若要解決此問題，請確認您的自訂標頭有效，然後為您的應用程式重新啟用預設的 404 重寫規則。

 **重寫 (200)** 

200 重新導向 (重寫) 是為了就好像是從原始地址提供一般，顯示來自目的地地址的內容。搜尋引擎排名歷史記錄會繼續套用到原始地址。重新導向會在伺服器端上進行，因此瀏覽器導覽列會在重新導向後顯示原始地址。使用 200 重新導向的常見原因包括：
+ 為了將整個網站重新導向到新的託管位置，而不變更網站的地址。
+ 為了將對單一頁面 Web 應用程式 (SPA) 的所有流量重新導向其 index.html 頁面，以由用戶端路由器功能處理。

 **找不到 (404)** 

當請求指向不存在的地址時，會發生 404 重新導向。會顯示 404 目的地頁面，而不是請求的頁面。404 重新導向發生的常見原因包括：
+ 為了避免使用者輸入錯誤的 URL 時的中斷連結訊息。
+ 為了將 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>

您可以使用查詢參數來進一步控制您的 URL 比對。Amplify 會將所有查詢參數轉送到 301 和 302 重新導向的目的地路徑，但以下情況除外：
+ 如果原始地址包含設為特定值的查詢字串，Amplify 不會轉送查詢參數。在此情況下，重新導向僅適用於具有指定查詢值的目的地 URL 請求。
+ 如果相符規則的目的地地址具有查詢參數，則不會轉送查詢參數。例如，如果重新導向的目的地地址為 `https://example-target.com?q=someParam`，則不會傳遞查詢參數。