2017-08-25 191 views
-1

如何重定向以刪除域名和.html文件名稱之間的所有中間文件夾,而不必在每個重定向中明確添加多個規則。Apache&NGINX重定向

基本上我希望兩個:

example.com/category/product.html
example.com/category/sub-category/product.html

重定向到

example.com/product.html

我還想:

example.com/category/subcategory.html

重定向到

example.com/category.html

我沒有一個邏輯的方式來區分子類別.h tml和product.html,所以我打開顯式匹配(或不匹配)列出子類別。

我想爲apache和nginx的重寫樣式完成此操作。

+0

我能夠使用RedirectMatch 301正確地重定向/category/product.html「^/category(/.*)\。html $」「$ 1.html」但我不能處理類別/子類別的情況。它將這些重定向到子類別/ product.html –

+0

您是否有一種區分'product.html'和'subcategory.html'的邏輯方法?例如,'product.html'將只包含產品ID或數字。 – abskmj

+0

好點,我不認爲我可以。至少對我而言,這不是一件很明顯的事情。在這種情況下,我需要明確指定子類別。這不是太糟糕,只有大約5/6,他們是主要類別相同。我將編輯主要問題以反映這一點。 –

回答

1

您可以按以下順序使用這些正則表達式:

^\/(category)\/(subcategory|subcategory2|subcategory3)\.html$ - >/$1.html重定向到example.com/category/subcategory.htmlexample.com/category.htmlSee Online

^\/(category)\/.*?([^\/]+)\.html$ - >/$2.html用於重定向example.com/category/product.htmlexample.com/category/sub-category/product.htmlexample.com/product.htmlSee Online

您可以用實際值替換categorysubcategory

+0

只要他們爲了他們應該工作,對吧?因爲如果第一個正則表達式不首先執行,那麼第二個正則表達式將遇到它將失敗的情況。 –

+0

順便說一句,我認爲,正則表達式測試網站是太棒了!我希望我前一陣子知道! –

+0

你明白了,訂單是這裏的關鍵。 – abskmj