因此,我正在做一个大约有4000个产品的网站,urls正在从旧网站更改,不想为每个产品制定301条规则,所以我做了以下操作来移动类别(示例如下)
# 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]然后,over抓取次要类别,如/home-page-categories/name-1/example.html,并将其设置为name-1/example/ -太棒了!
然而,在下一级,我需要携带产品名称,因此它将是:
/home-page-categories/name-1/example/product.html,并将其设为name-1/example/product.html,但我认为上面的规则可能会与此冲突。
有没有什么办法可以处理这一切呢?
发布于 2012-05-16 01:32:11
为了与您的示例保持一致,对于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]发布于 2012-05-16 01:51:24
我认为对你来说,用PHP代码重写这种类型的代码是更好的解决方案。如果你不知道怎么做,告诉我,我会更新这篇文章,并添加一些例子。
https://stackoverflow.com/questions/10601190
复制相似问题