htaccess重定向规则 - 如何重定向一个级别?

时间:2011-07-16 10:39:52

标签: .htaccess mod-rewrite url-rewriting

http://mysite.com/level-1/level-2/level-3/

我想重定向到

http://mysite.com/level-1/level-2/

“level-1”和“level-2”可以是用户输入的任何内容......(不是这些确切的单词)

你可以指导我一个教程或给我一些指示吗?

非常感谢!!

2 个答案:

答案 0 :(得分:3)

你只想扔掉第二次斜线之后的东西。这是一个简单的规则:

RewriteRule ^(.*?/.*?/).+$ $1

然后调查你是否想要[L,QSA]这样的东西。你可能会也可能不会。

答案 1 :(得分:3)

根据您的评论(从第3级到第2级文件夹,完全使用301永久重定向):

RewriteEngine On
RewriteBase /

RewriteRule ^([^/]+/[^/]+/)[^/]+/$ http://www.example.com/$1 [QSA,R=301,L]
  1. 此规则会将example.com/hello/pink/kitten/重定向到example.com/hello/pink/

  2. 如果网址结构不同,则会发生“无重定向”:

    • 缺少尾部斜杠(例如example.com/hello/pink/kitten
    • 4级深度网址(例如example.com/hello/pink/kitten/family/
  3. 此规则需要放在网站根文件夹中的 .htaccess 中。如果放在其他地方(例如Apache配置文件,例如在<VirtualHost>内),规则需要小幅调整。