1

所以我正在做一个包含大约 4,000 种产品的网站,并且网址正在从旧网站更改,并且不想为每个网站制定 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但我认为上面的规则可能与此冲突。

关于可以处理这一切的规则的任何想法?

4

2 回答 2

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]
于 2012-05-15T17:32:11.493 回答
0

我认为这对你来说是在 PHP 代码中进行这种类型的重写的更好解决方案。如果您不知道如何告诉我,我会更新这篇文章并添加一些示例。

于 2012-05-15T17:51:24.007 回答