首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂301重定向的mod重写规则

复杂301重定向的mod重写规则
EN

Stack Overflow用户
提问于 2012-05-15 20:59:16
回答 2查看 143关注 0票数 1

因此,我正在做一个大约有4000个产品的网站,urls正在从旧网站更改,不想为每个产品制定301条规则,所以我做了以下操作来移动类别(示例如下)

代码语言:javascript
复制
# 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/中--太棒了!

代码语言:javascript
复制
# 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,但我认为上面的规则可能会与此冲突。

有没有什么办法可以处理这一切呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-16 01:32:11

为了与您的示例保持一致,对于name-1,一个解决方案可能是

代码语言:javascript
复制
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]

根据您希望实现的目标,您可以将所有规则替换为

代码语言:javascript
复制
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]

或者使用更具体的规则

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-05-16 01:51:24

我认为对你来说,用PHP代码重写这种类型的代码是更好的解决方案。如果你不知道怎么做,告诉我,我会更新这篇文章,并添加一些例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10601190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档