0

我想以 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

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

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

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

规则本身选择“stripes”或“hooves”,后跟“/zebras”或“/zebras/”并重写 URL,将先前选择的项目(“stripes”或“hooves”)放在“zebras/”之后 –完全按照它应该做的那样做。

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

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

4

1 回答 1

1

我想这样的事情会做到这一点:

RedirectMatch 301 ^/(stripes|hooves)/zebras/?$ http://africananimals.com/zebras/$1
于 2013-02-11T03:16:30.220 回答