1

我有一个不再使用的旧网站,需要将流量重定向到其他地方。但我遇到的一个问题是,网站的一个特定区域需要保持可用,以支持以前从该网站购买过商品的客户。

我想用 .htaccess 做到这一点,但我的正则表达式知识非常有限。

基本上我想重定向所有没有支持路径的站点请求(最后可以有额外的段):

http://www.example.com/support
http://www.example.com/support/contact
http://www.example.com/support/ticket

但是,应将以下示例(其中两个)重定向到新站点:

http://www.example.com
http://www.example.com/projects

到目前为止,我只弄清楚如何使用以下方法重定向请求而无需其他参数:

RewriteRule ^$ http://www.newsite.com/ [L,R=301]

我知道我需要的基本上是这样的:

IF url does not contain www.example.com/support
THEN redirect

我只是不知道如何用 regex / .htaccess 编写它

任何帮助,将不胜感激。

4

3 回答 3

1

使用 mod_rewrite 指令更容易,如下所示:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteCond %{REQUEST_URI}  !/support/?   [NC]
RewriteRule  ^(.*)$    http://www.newsite.com/$1    [L,R=301,QSA]
于 2013-01-08T10:00:40.260 回答
1

Apache 有很好mod_rewrite. 真的值得一读。

在您的特殊情况下,为避免对所有以 开头的路径进行重定向support,您可以使用RewriteCond指令,即:

RewriteCond %{REQUEST_URI} !^/support
RewriteRule ^(.*) http://www.newsite.com/$1 [L,R=301]
于 2013-01-08T10:00:53.393 回答
0

试试这个:

RewriteRule ^(support/?.*)$ $1 [L]
RewriteRule ^(.*)$ http://www.newsite.com/$1 [L,R=301]

第一个“转发”您的support/请求support/...并完成 RewriteRules 的处理。第二个应该将所有其他查询转发到新站点。

于 2013-01-08T09:53:42.047 回答