重新導向

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

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

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

Pro環境的更新

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

整個路由重新導向

使用整個路由重新導向,您可使用 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 (已永久移動)302307、和 308. 預設為 302.
    expires 選擇性,指定在瀏覽器中快取重新導向的時間長度。 預設為 expires 直接在下定義的值 redirects 機碼,但在此層級,您可以微調個別部分重新導向的快取有效期。

部分路由重新導向的範例

下列範例說明如何在 routes.yaml 檔案使用各種 paths 組態選項。

規則運算式模式比對

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

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/pathhttps://{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