2012-05-15 104 views
1

因此,我正在做一個網站,大約有4,000個產品,並且網址從那裏舊網站改變,並且不喜歡爲每個網站製作301規則,所以我已經完成了以下操作來移動類別(下面的例子)複雜的301重定向的mod重寫規則

# Main Categories 
RewriteRule ^(.*)home-page-categories/name-1\.html$ name-1/ [R=301,NC,L] 
RewriteRule ^(.*)home-page-categories/name-2\.html$ name-2/ [R=301,NC,L] 
RewriteRule ^(.*)home-page-categories/name-3\.html$ name-3/ [R=301,NC,L] 
RewriteRule ^(.*)home-page-categories/name-4\.html$ name-4/ [R=301,NC,L] 

因此上述使得home-page-categories/name-1.html到單個目錄/name-1/ - 太棒了!

# Artist Categories from Root Categories 
RewriteRule ^(.*)home-page-categories/name-1/(.*)\.html$ name-1/$2/ [R=301,L] 
RewriteRule ^(.*)home-page-categories/name-2/(.*)\.html$ name-2/$2/ [R=301,L] 
RewriteRule ^(.*)home-page-categories/name-3/(.*)\.html$ name-3/$2/ [R=301,L] 
RewriteRule ^(.*)home-page-categories/name-4/(.*)\.html$ name-4/$2/ [R=301,L] 

過度然後抓起個二級類別中,如/home-page-categories/name-1/example.html並使其name-1/example/ - 太棒了!

但是上了一個檔次,我需要隨身攜帶的產品名稱,因此這將是:

/home-page-categories/name-1/example/product.html,並使其name-1/example/product.html但我覺得上面的規則可能有衝突。

任何想法都可以處理這一切?

回答

0

保持與你的例子線,解決方案可能是,name-1

RewriteRule home-page-categories/name-1\.html$ /name-1/ [R=301,NC,L] 
RewriteRule home-page-categories/name-1/([^/]+)\.html$ /name-1/$1/ [R=301,L] 
RewriteRule home-page-categories/name-1/(.*)\.html$ /name-1/$1.html [R=301,L] 

根據您想達到什麼樣的,你可以用

RewriteRule home-page-categories/([^/]+)\.html$ /$1/ [R=301,NC,L] 
RewriteRule home-page-categories/([^/]+)/([^/]+)\.html$ /$1/$2/ [R=301,L] 
RewriteRule home-page-categories/(.*\.html)$ /$1 [R=301,L] 

,或是更換所有的規則更具體的規則

RewriteRule home-page-categories/(name-1|name-2|name-3|name-4)\.html$ /$1/ [R=301,NC,L] 
RewriteRule home-page-categories/(name-1|name-2|name-3|name-4)/([^/]+)\.html$ /$1/$2/ [R=301,L] 
RewriteRule home-page-categories/((name-1|name-2|name-3|name-4)/.*\.html)$ /$1 [R=301,L] 
0

我認爲對你來說更好的解決方案在PHP代碼中執行這種重寫。如果你不知道如何告訴我,我會更新這篇文章並添加一些例子。