2012-05-15 73 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代码中执行这种重写。如果你不知道如何告诉我,我会更新这篇文章并添加一些例子。