RedirectMatch用于重新排列目录结构的Mod_Rewrite规则的等效项

时间:2013-02-11 01:10:10

标签: apache mod-rewrite url-rewriting rewrite

我想以RedirectMatch指令的形式重新创建mod_rewrite规则。

首先,请看一下这个mod_rewrite规则:

RewriteEngine On
RewriteCond %{HTTP_HOST} (www.)?africananimals.com
RewriteCond %{REQUEST_URI} zebras
RewriteRule ^(stripes|hooves)/zebras/?$ zebras/$1 [R,L]

规则(由非常有帮助且知识渊博的StackOverflow撰稿人编写)告诉服务器转换这四个URL:

http://africananimals.com/stripes/zebras

http://africananimals.com/hooves/zebras

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

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

- 进入这些更好,更逻辑的结构:

http://africananimals.com/zebras/stripes

http://africananimals.com/zebras/hooves

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

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

(这些不是实际的网址,只是示例。)

该托管服务器上还有其他网站,可能恰好具有相同的目录结构,因此第一个条件确保规则仅适用于africananimals.com域,无论是否有www。

第二个条件确保仅在URL中出现“zebras”一词时才应用该规则。

规则本身选择“stripe”或“hooves”后跟“/ zebras”或“/ zebras /”并重写URL,将之前选择的项目(“条纹”或“蹄”)放在“斑马”之后/“ - 完全应该这样做。

问题:如何使用RedirectMatch指令完成相同的任务?

作为一名阿帕奇业余爱好者,我非常感谢专业人士的见解。

1 个答案:

答案 0 :(得分:1)

我猜这样的事情会这样做:

RedirectMatch 301 ^/(stripes|hooves)/zebras/?$ http://africananimals.com/zebras/$1