所以我在做一个有大约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]
然后抓住次要类别,例如/home-page-categories/name-1/example.html
并将其设为name-1/example/
- 太棒了!
然而,在下一个级别,我需要携带产品名称,因此它将是:
/home-page-categories/name-1/example/product.html
并将其设为name-1/example/product.html
,但我认为上述规则可能与此相冲突。
关于可以处理这一切的规则的任何想法?
答案 0 :(得分: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]
答案 1 :(得分:0)
我认为对于你来说,更好的解决方案是在PHP代码中进行这种类型的重写。如果您不知道如何告诉我,我将更新此帖并添加一些示例。