[英]How to do 301 redirections after Wordpress Permalinks change
我更改了我網站的 Woocommerce 永久鏈接結構,我需要一些 301 重定向幫助。
Woocommerce產品永久鏈接根據結構配置:
/shop/%product_cat%/
現在根據結構:
/shop/
請問我需要在.htaccess
文件中添加哪些行來進行 301 重定向?
更新: /shop/%product_cat%/
是 WordPress 中的永久鏈接結構,表示example.com/shop/category1/subcategory1/MyProduct
和/shop/
表示example.com/shop/MyProduct
,后者更適合 SEO。
/shop/%product_cat%/
是 WordPress 中的永久鏈接結構,表示example.com/shop/category1/subcategory1/MyProduct
和/shop/
表示example.com/shop/MyProduct
如果舊 URL 始終包含兩個額外的路徑段,形式為/category1/subcategory1
,后跟一個包含MyProduct
( product-name ) 的路徑段,那么您需要在.htaccess
文件頂部的 WordPress之前執行以下操作前控制器:
RewriteRule ^shop/[^/]+/[^/]+/([^/]+)$ /shop/$1 [R=302,L]
為了避免沖突,最好使用正則表達式更具體。
但是,如果您需要一個更通用的解決方案來匹配單個類別路徑段或兩個以上,那么請改用以下內容:
RewriteRule ^shop/(?:[^/]+/)+([^/]+)$ /shop/$1 [R=302,L]
以上將匹配以下任何 URL 格式並將它們全部重定向到/shop/MyProduct
:
/shop/category1/MyProduct
/shop/category1/subcategory1/MyProduct
/shop/category1/subcategory1/subsubcategory1/MyProduct
/shop/category1/subcategory1/subsubcategory1/etc/MyProduct
使用 302(臨時)重定向進行測試以避免緩存問題,並且只有在您確認它可以正常工作時才更改為 301(永久)重定向(如果這是有意的話)。
更新:我的產品頁面:
https://www.example.com/shop/crazy-cat-test-t-shirt/
- 我的舊產品頁面(404錯誤):https://www.example.com/shop/women/t-shirt/crazy-cat-test-t-shirt/
- 一個類別的測試地址(作品):https://www.example.com/shop/category/crazy-cat-test-t-shirt/
這突出了“問題”(如前面的評論中簡要提到的)......所有這些 URL(舊的和新的)都包含一個尾部斜杠。 您之前的“示例”網址都沒有包含斜杠?! 如果請求的 URL 包含尾部斜杠,則上面的RewriteRule
指令將不起作用,因為它旨在與您發布的示例一起使用(沒有尾部斜杠)。 帶有和不帶有斜杠的 URL 是兩個完全不同的 URL。
如果它當前正在“使用”單類別 URL,那么“其他東西”必須這樣做或更改請求,以便上述指令匹配。 但是,上述指令將省略(新)目標的尾部斜杠,因此“其他”將需要 append 尾部斜杠,如果這是要求的話。 (?!)
如果“舊”URL上始終存在尾部斜杠,並且“新”URL 上需要尾部斜杠,則將上述指令更改為:
RewriteRule ^shop/(?:[^/]+/)+([^/]+/)$ /shop/$1 [R=302,L]
在上面,強制尾部斜杠包含在捕獲的子組中,因此出現在$1
反向引用中。
但是,如果尾部斜杠在“舊”URL 上是可選的,但應始終出現在“新”URL 上,則將指令更改為:
RewriteRule ^shop/(?:[^/]+/)+([^/]+)/?$ /shop/$1/ [R=302,L]
在上面,可選的尾部斜杠在捕獲的組之外,因此我們必須手動將其包含在目標 URL 上,這是強制性的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.