重新導向

管理重新導向規則是Web應用程式的常見需求,尤其是在您不想失去隨著時間變更或移除的傳入連結的情況下。

下列範例示範如何使用routes.yaml設定檔管理雲端基礎結構專案上Adobe Commerce的重新導向規則。 如果本主題中討論的重新導向方法並不適合您,您可以使用快取標頭來做同樣的事情。

NOTE
下列路由組態範例使用帶有預留位置的路由範本。 {default}預留位置代表為您的網站設定的預設網域。 如果您的專案有多個網域,請使用{all}預留位置來設定預設網域和所有別名的路由。 請參閱設定路由

Pro環境的更新

WARNING
有些​ Pro專案 ​需要支援票證,才能更新routes.yaml檔案中的路由設定和.magento.app.yaml檔案中的cron設定。 Adobe建議您在整合環境中更新及測試YAML設定檔,然後將變更部署至測試環境。 如果您在重新部署後未將變更套用至測試網站,且記錄檔中沒有相關的錯誤訊息,則您​ 必須 提交說明嘗試的組態變更的Adobe Commerce支援票證。 在票證中包含任何更新的YAML設定檔案。
WARNING
對於雲端基礎結構專案上的Adobe Commerce,在routes.yaml檔案中設定許多非規則運算式重新導向和重新寫入,可能會導致效能問題。 如果routes.yaml檔案大於或等於32 KB,請將非規則運算式重新導向解除安裝並重新寫入Fastly。 檢視​_Adobe Commerce說明中心_​中的解除安裝非Regex重新導向至Fastly而非Nginx (路由)

整個路由重新導向

使用整個路由重新導向,您可以使用routes.yaml檔案來定義簡單路由。 例如,您可以從Apex網域重新導向至www子網域,如下所示:

http://{default}/:
    type: redirect
    to: http://www.{default}/

部分路由重新導向

.magento/routes.yaml檔案中,您可以根據模式比對,將部分重新導向規則新增到現有路由:

http://{default}/:
    redirects:
        expires: 1d
        paths:
          "/from": { to: "http://example.com/" }
          "/regexp/(.*)/matching": { to: "http://example.com/$1", regexp: true }

部分重新導向適用於任何型別的路由,包括應用程式直接提供的路由。

redirects下有兩個可用的金鑰:

  • 過期 — 選擇性,指定在瀏覽器中快取重新導向的時間長度。 有效值的範例包括3600s1d2w3m

  • 路徑 — 指定部分路由重新導向規則組態的一或多個機碼值組。

    對於每個重新導向規則,索引鍵是用來篩選重新導向之要求路徑的運算式。 值是指定重新導向的目標目的地以及處理重新導向的選項的物件。

    value物件具有下列屬性:

    table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2
    屬性 說明
    to 必要項,部分絕對路徑、具有通訊協定和主機的URL,或指定重新導向規則之目標目的地的模式。
    regexp 選擇性,預設為false。 指定是否應將路徑索引鍵解譯為PCRE規則運算式。
    prefix 指定重新導向是否同時適用於路徑及其所有子系,或只適用於路徑本身。 預設為true。 如果regexptrue,則不支援此值。
    append_suffix 決定是否使用重新導向來傳遞尾碼。 預設為true。 如果regexp索引鍵是true或* (如果prefix索引鍵是false),則不支援此值。
    code 指定HTTP狀態代碼。 有效的狀態碼為301 (永久移動)302307308。 預設為302
    expires 選擇性,指定在瀏覽器中快取重新導向的時間長度。 預設為直接在redirects機碼下定義的expires值,但在此層級中,您可以微調個別部分重新導向的快取有效期。

部分路由重新導向的範例

下列範例說明如何使用各種paths組態選項在routes.yaml檔案中指定部分路由重新導向。

規則運算式模式比對

使用以下格式,根據規則運算式設定重新導向要求。

http://{default}/:
    type: upstream
    redirects:
    paths:
        "/regexp/(.*)/match": { to: "http://example.com/$1", regexp: true }

此設定會根據規則運算式篩選要求路徑,並將相符要求重新導向至https://example.com。 例如,對https://example.com/regexp/a/b/c/match的請求會重新導向至https://example.com/a/b/c

字首模式比對

使用以下格式,為以指定首碼模式開頭的路徑設定重新導向要求。

http://{default}/:
    type: upstream
    redirects:
    paths:
        "/from": { to: "https://{default}/to", prefix: true }

此設定的運作方式如下:

  • 將符合模式/from的要求重新導向至路徑http://{default}/to

  • 將符合模式/from/another/path的要求重新導向至https://{default}/to/another/path

  • 如果您將prefix屬性變更為false,符合/from模式的要求會觸發重新導向,但符合/from/another/path模式的要求不會觸發。

字尾模式比對

使用下列格式設定重新導向要求,以便將要求中的路徑尾碼附加至目標目的地:

http://{default}/:
    type: upstream
    redirects:
    paths: "/from": { to: "https://{default}/to", append_suffix: false }

此設定的運作方式如下:

  • 將符合模式/from/path/suffix的要求重新導向至路徑https://{default}/to

  • 如果您將append_suffix屬性變更為true,則符合/from/path/suffix的要求會重新導向至路徑https://{default}/to/path/suffix

路徑特定的快取設定

使用以下格式來自訂從特定路徑快取重新導向的時間:

http://{default}/:
    type: upstream
    redirects:
    expires: 1d
    paths:
        "/from": { to: "https://example.com/" }
        "/here": { to: "https://example.com/there", expires: "2w" }

此設定的運作方式如下:

  • 第一個路徑(/from)的重新導向會快取一天。

  • 快取第二個路徑(/here)的重新導向,為期兩週。

recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26