ASP.Net 301重定向和URL重写

时间:2010-12-01 20:41:14

标签: .net url

我刚刚使用URL重写更改了我的某个网站的网址网址结构,我需要将旧结构重定向到新结构(以处理由Google编制索引的旧链接)。我的问题是我想重定向到重写的URL,而不是实际的URL,我找不到这样做的方法。

在更改之前,我有以下网址:

RewriteRule ^ products /([^ _ \ r \ n //] *)/([^ _ \ r \ n //] *)/ $ /products.aspx?cat=$1&subcat=$2 [ NC,L]

更改后,我有以下内容:

RewriteRule ^ products - ([^ _ \ r \ n //] *) - ([^ _ \ r \ n //] *)/ $ /products.aspx?cat=$1&subcat=$2 [ NC,L]

我现在要做的是为匹配

的网址发出301重定向

^ products /([^ _ \ r \ n //] *)/([^ _ \ r \ n //] *)/ $ to ^ products - ([^ _ \ r \ n //] *) - ([^ _ \ r \ n //] *)/ $,

即具有以下规则:

RewriteRule ^ products - ([^ _ \ r \ n //] *) - ([^ _ \ r \ n //] *)/ $ products - ([^ _ \ r \ n //] * ) - ([^ _ \ r \ n //] *)/ [NC,L]

以上规则会产生以下错误:

“页面未正确重定向”

有没有办法用.Net或使用Url重写规则?

任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

好的,我使用以下规则解决了问题:

RewriteRule ^ products - ([^ _ \ r \ n //] *) - ([^ _ \ r \ n //] *)/ $ /redir.aspx?url=/products-$1-$2/ [NC,L]

redir.aspx页面的作用是将301代码写入标题并转移到作为参数传递给它的新url。