ASP中网页重定向.. NET取决于URL

本文关键字:取决于 URL NET 重定向 中网 网页 ASP | 更新日期: 2023-09-27 17:49:35

我有一个域名叫mywebsite.com,但我更希望用户通过www子域名访问我的网站。

如何在asp.net mvc3中轻松实现验证和重定向?

当我在使用php时,我做了这样的事情:

if($_SERVER['SERVER_NAME'] != "www.mywebsite.com")
     header('Location: www.mywebsite.com');

我想在asp.net (c#)中找到一种类似的方法来实现这种重定向(我宁愿不设置301重定向,而只是像我在PHP中使用的软重定向)。

我知道我可以在我的每个控制器的操作方法和重定向用户做一个验证,如果他不是在子域www.mywebsite.com上,但我宁愿写一次验证和重定向,我找不到在哪里:/

ASP中网页重定向.. NET取决于URL

您可以使用:

Request.Url.ToString()

这将返回URL,然后您可以快速检查它是否包含'www.',如果为真则重定向。但是,我建议您在IIS中重写URL时处理此问题。

遵循这里的指南:http://www.dotnetexpertguide.com/2011/08/iis-7-redirect-domaincom-to.html这是使domain.com转到www.domain.com,但它的工作方式是相同的。

你可以试试这样

 if(!Request.Url.Host.Equals("www.mywebsite.com"))
 {
      Response.Redirect("website");
 }

如果您正在寻找只是添加/追加头信息,然后使用Response.AppendHeader()。

Request.Url.ToString()属性可以根据Ryan的答案检查您正在寻找的url。

实际上,原来的问题特别要求'软'重定向(201或202)而不是移动永久/发现(301/302),所以我认为,而不是响应。重定向条件行应为:

 if(!Request.Url.Host.Equals("www.mywebsite.com"))
 {
      HttpContext.Current.Response.Headers.Add("Location", "www.mywebsite.com");
 }

编辑:我相信状态也可以直接设置,与Response一起使用。重定向:

 if(!Request.Url.Host.Equals("www.mywebsite.com"))
 {
      HttpContext.Current.Response.Redirect("www.mywebsite.com");
      HttpContext.Current.Response.Status = "201 Created";
 }

如果我没有完全错过这里的东西,你不能只是设置主机头在IIS设置的网站,包括www.domain.com以及domain.com?