如何透過 .htaccess 動態嵌套 URL 進行重新導向

如何透過 .htaccess 動態嵌套 URL 進行重新導向

如何使用寫入規則?

我需要重定向

www.example.com/accesories

www.example.com/accesories/item

更新:如果我使用Redirect /accesories /accesories/items我會收到:

www.example.com//accesories/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/

答案1

Redirect /accesories /accesories/items

是的,這將導致重定向循環,因為 mod_aliasRedirect指令是前綴匹配的,根據阿帕奇文檔(突出我自己的):

....任何要求以。URL-path 將向目標 URL 位置處的用戶端傳回重新導向請求。匹配的 URL 路徑之外的其他路徑資訊將附加到目標 URL。

如果您只想重定向該特定 URL,那麼您需要使用該RedirectMatch指令*1相反,它與正則表達式匹配。例如:

RedirectMatch ^/accesories$ /accesories/items

*1除非您已經在其他指令中使用 mod_rewrite (這就是為什麼我問「您還有哪些其他指令?」),在這種情況下,最好使用 mod_rewrite 。

「動態」 - 因為配件是一個包含產品的類別,但我不想顯示 wyhos 產品需要重定向到 /accesories/items

我不太確定你的意思,但如果需要重定向/accesories/<products>/accesories/items,哪裡<products>可以是任何單一路徑段,除此之外,items你需要在指令中使用負前瞻RedirectMatch(或使用 mod_rewrite )。例如:

RedirectMatch ^/accesories(/(?!items)[^/]*)?$ /accesories/items

上面的內容將/accesories/accesories/和重定向到/accesories/<anything>,但沒有/accesories/items(因為這會創建重定向循環)到/accesories/items

請注意,這些是 302(臨時)重定向。 (始終使用 302 進行測試,以避免潛在的快取問題,並且僅在以後有意更改為 301。)

指令的順序.htaccess可能很重要。外部重定向通常需要位於檔案頂部附近.htaccess

相關內容