如何301重定向

时间:2009-11-29 19:59:40

标签: asp.net iis-7 redirect url-rewriting

好的,我需要知道如何进行重定向(放置代码或指定设置的位置)。我们移动应用程序后,我们会从一个应用程序重定向到另一个应用程序。

例如,如果用户转到existing.example.com/archive/

我们希望将包含old.example.com的所有请求重定向到new.example.com。网址中的其余部分保持不变。例如,/archive/就是一个示例,因此我们希望将它们重定向到此应用的新位置new.example.com/archive/

我需要弄清楚如何检查现有网站的传入网址是否为existing.example.com,如果是,请仅使用新的new.example.com替换该部分,并保留剩下的部分网址

我知道您可以在IIS 7中或以编程方式执行此操作。我想我不知道在任何一种情况下如何做到这一点。我安装了IIS7 Rewrite插件,确定没问题,但这是我没有得到的:

模式:

的redirectUrl:

我没有看到在该界面中我是如何匹配existing.example.com然后在RedirectURL中放置的内容因为我想将整个网址仅existing.example.com更改为{ {1}}用于REdirectURL ...我在IIS 7中看不到我是如何做到的。

4 个答案:

答案 0 :(得分:3)

这是一篇描述如何匹配一个域并使用IIS7 URL重写加载项与其他所有内容重定向到另一个域的帖子:http://weblogs.asp.net/owscott/archive/2009/11/27/iis-url-rewrite-rewriting-non-www-to-www.aspx

答案 1 :(得分:2)

您不需要任何复杂的重写内容来完成这样一个简单的重定向,它是一个基本的Web服务器功能。在IIS7中,您现在可以选择不安装它(从万维网服务 - >常见HTTP功能 - > HTTP重定向),但这样做是不常见的。

在IIS管理器中编辑主网站的“绑定”,使其仅响应“主机名:”new.example.com,然后创建绑定到主机名old.example.com的新网站。对于此网站点击“HTTP重定向”选项和“将请求重定向到此目的地:http://new.example.com/并带有'状态代码:'301。

在配置XML术语中:

<system.webServer>
    <httpRedirect enabled="true" destination="http://new.example.com/" httpResponseStatus="Permanent" />
</system.webServer>

答案 2 :(得分:0)

在您网站的global.asax.cs文件中,您可以从BeginRequest重定向,如下所示。您可以编写例程来根据需要使用regex或string.replace()或您喜欢的任何内容替换域名。

protected void Application_BeginRequest(Object sender, EventArgs e){ 
    ...parse urls... 
    Response.Redirect(myNewPath)
}

答案 3 :(得分:0)

对于asp.net应用程序,我对urlrewriting.net有很好的使用经验,这是一个可以在web.config中配置重定向的免费组件。它允许您输入正则表达式并使用反向引用指定新URL,例如这样的事情(未经测试):

<add name="newdomain" virtualUrl="^http\://old.example.com/(.*)$"
  rewriteUrlParameter="ExcludeFromClientQueryString"
  destinationUrl="http://new.example.com/$1"
  redirect="Domain"
  redirectMode="Permanent"
  ignoreCase="true" /> 

缺点:需要为每个ASP.NET应用程序配置(并且您可能需要重新配置IIS以通过asp.net路由所有内容,或者它可能仅适用于.aspx文件)。如果要重定向完整域,则最好在IIS级别而不是在应用程序级别上执行此操作。但是,为此,您可以在http://serverfault.com上获得更好的帮助,这是系统管理员所在的位置......