ISAPI_Rewrite到301将旧域重定向到新域,运行ASP.NET4

时间:2012-03-07 13:23:22

标签: .htaccess asp.net-4.0 http-status-code-301 isapi-rewrite

我在不同的网址上有两个相同的网站:

http://www.oldsite.co.ukhttp://www.newsite.co.uk。我希望301将来自旧网站的所有请求重定向到新网站以获得各种扩展(例如'index.htm','images / image.jpg','directory / subdirectory /'等)。对旧域上任何类型的文件/文档/路径的所有引用都需要定向到新域上的相同位置。

网站运行使用.NET4的内容管理系统。

到目前为止,我尝试过两种方法:首先在IIS中设置永久重定向。这在一定程度上起作用,但是给了我一个像这样的新URL:

http://www.newsite.co.ukeurl.axd/5e42bf571e13754bbed8710d 2d377a5d /

我已经能够找到关于'eurl.axd'的东西,它是由ASP.NET4框架引起的,它在重定向期间以某种方式拦截请求。我发现的唯一解决方案将涉及禁用asp.net 4(这不是一个选项,因为CMS在此运行)或做某种注册表黑客,我真的不想这样做(请记住那里是这个服务器上的其他域名。)

另一个选项是使用ISAPI_Rewrite。我试过这个:

RewriteRule (.+) http://www.newsite.co.uk$1 [R=301,L] 

但是这也给出了eurl.axd的相同问题。所以我尝试了这个,它删除了eurl.axd的东西,但似乎只适用于网站的主页 - 没有其他页面或资源:

RewriteRule (.*)eurl.axd/.* http://www.newsite.co.uk/$1 [R=301,L]

当我运行它时,错误日志中没有任何内容,但重写日志显示规则未按预期工作,例如试图访问'http://www.oldsite.co.uk/technical.aspx'只是在浏览器中加载该页面(无重定向)并输出此日志:

(2) init rewrite engine with requested uri /technical.aspx 
(1) Htaccess process request C:\Program Files\Helicon\ISAPI_Rewrite3\httpd.conf 
(1) Htaccess process request c:\inetpub\vhosts\oldsite.co.uk\httpdocs\.htaccess 
(3) applying pattern '(.*)eurl.axd/.*' to uri 'technical.aspx'

有没有人知道如何修改此规则,以便将所有资源从旧域重定向到新域?

非常感谢!

2 个答案:

答案 0 :(得分:1)

在IIS中创建新的空网站,将带有重定向规则的.htaccess添加到此网站,然后将www.oldsite.co.uk指向此网站。因此,您的.NET4 CMS将不会在对旧网站的请求时执行,并且在重定向之前无法更改URL。

答案 1 :(得分:0)

谢谢大家。我最终解决这个问题的方法是删除旧域中的所有文件并删除它对ASP.NET4的任何依赖(将应用程序池更改为不使用.NET4等的文件)然后只需设置简单的永久重定向IIS。所以我根本没有最终使用ISAPI_Rewrite - IIS处理得很好。

所以现在,我旧域中的任何内容都指向新域,这是完美的。

感谢您的指示人员,深入了解IIS非常有趣,我不经常这样做。