0

我有不同的URL两个相同的网站:下ISAPI_Rewrite 301重定向旧域名新域名,运行ASP.NET4

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' 

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

非常感谢!

回答

0

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

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

感谢您的指点人,进一步研究IIS非常有趣,我不经常这样做。

1

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

+0

这是一个有趣的选择,谢谢。我需要100%确定,尽管在我这样做之前,我的重定向解决方案重定向了所有资源。标准IIS6重定向是否执行此操作? – Dan 2012-03-07 14:21:16

+0

其实,如果我只是禁用ASP,会更进一步。在旧网站上的NET4,并设置通过IIS重定向将工作? – Dan 2012-03-07 14:22:45

+0

我可以确认此解决方案无效。它适用于主页,但不适用于任何其他文件/文件夹/路径。如果我创建一个新的域来进行转发,那么我基本上必须创建整个文件夹结构,但不使用.NET4,这不是一个解决方案。不过值得一试,谢谢。 – Dan 2012-03-07 15:49:54