我有這個RedirecMatch
RedirectMatch 301 ^/en/products/(.*)/(.*)/(.*)$ https://www.example.com/en/collections/$2/
如果我訪問
https://www.example.com/en/products/sofas/greyson/greyson-sofa
我被重定向到
https://www.example.com/en/collections/greyson/greyson-sofa
我想要的是
https://www.example.com/en/collections/greyson/
我該如何做到這一點?
uj5u.com熱心網友回復:
您發布的內容中沒有任何明顯的內容會產生您所看到的特定輸出,但是,指令中還有其他錯誤,您可能會看到快取的回應。301 由瀏覽器持久快取,因此也會快取任何錯誤。
該Redirect指令是前綴匹配的,匹配后的所有內容都被復制到目標 URL 的末尾。因此,您看到的重定向將由如下指令生成:
Redirect 301 /en/products/sofas/greyson https://www.example.com/en/collections/sofas/greyson
當您請求/en/products/sofas/greyson/greyson-sofa時,匹配后的部分,即。/greyson-sofa, 被復制到目標 URL 的末尾以生成/en/collections/sofas/greyson/greyson-sofa
您可以通過重新排序規則來解決大部分問題(但也要注意尾部的斜杠)。您需要首先獲得最具體的重定向。RedirectMatch 之前 Redirect。例如,采用以下兩個重定向:
Redirect 301 /en/products/accessories https://www.example.com/en/products/complements/ Redirect 301 /en/products/accessories/bush/ https://www.example.com/en/collections/bush-on/
由于該Redirect指令是前綴匹配的,因此請求/en/products/accessories/bush/實際上會被第一個規則捕獲,而不是第二個規則并最終重定向到/en/products/complements//bush-on/- 注意錯誤的雙斜杠(因為源 URL 和目標 URL 上的尾斜杠不匹配.)
您需要顛倒這兩個規則。(但也要注意尾部的斜線。)
這同樣適用于Redirect隨后的指令。你也有一些重復,即。你有兩個規則/en/products/chairs-and-bar-stools/piper/?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/456040.html
