用于重组目录结构的Mod_Rewrite规则(或备选方案)

时间:2013-02-10 18:59:20

标签: regex apache mod-rewrite redirect

我工作的网站过去有这两页:

http://www.africananimals.com/stripes/zebras

http://www.africananimals.com/news/zebras

(这些不是实际的域名,只是示例。)

最近重新组织了目录结构,并且相同页面的URL更改为:

http://www.africananimals.com/zebras/stripes

http://www.africananimals.com/zebras/news

我想要一个mod_rewrite规则(或者资源消耗较少的替代方法,例如Redirect命令或类似的东西),让那些将这两个页面都标记为旧URL的爱好者受益。我需要这个适用于http // www.africananimals.com和http // africananimals.com / URL版本。

我的解决方案是:

Redirect /stripes/zebras http://www.africananimals.com/zebras/stripes
Redirect /news/zebras http://www.africananimals.com/zebras/news

- 但我不确定我是否正确。在正则表达式上很糟糕,并且对.htaccess只有肤浅的理解,我一定会感激一些指导。

1 个答案:

答案 0 :(得分:1)

如果请求不包含单词zebras,它甚至不会尝试这个正则表达式(保存cpu)。这将在开始时交换条纹或斑马,并在斑马的末尾替换它。

RewriteEngine On
RewriteCond %{REQUEST_URI} zebras
RewriteRule ^(stripes|news)/zebras/?$ zebras/$1 [R,L]
/?会使它也接受任何以/结尾的uri,就像目录一样。