如何使用寫入規則?
我需要重定向
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
。