我刚刚使用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重写规则?
任何帮助都会受到赞赏。
答案 0 :(得分:0)
好的,我使用以下规则解决了问题:
RewriteRule ^ products - ([^ _ \ r \ n //] *) - ([^ _ \ r \ n //] *)/ $ /redir.aspx?url=/products-$1-$2/ [NC,L]
redir.aspx页面的作用是将301代码写入标题并转移到作为参数传递给它的新url。