【发布时间】:2012-03-07 13:23:22
【问题描述】:
我在不同的 URL 上有两个相同的网站:
http://www.oldsite.co.uk 和 http://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'
有谁知道如何修改此规则,以便将所有资源从旧域重定向到新域?
非常感谢!
【问题讨论】:
标签: .htaccess asp.net-4.0 http-status-code-301 isapi-rewrite