根据URL重定向ASP.NET中的网页

时间:2012-12-27 14:21:39

标签: c# asp.net asp.net-mvc-3 redirect

我有一个名为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上,则可以重定向用户,但我更喜欢在验证和重定向后编写,我可以找不到:/

非常感谢!

5 个答案:

答案 0 :(得分:2)

您可以使用:

Request.Url.ToString()

这将返回URL,然后您可以快速检查它是否包含“www”。如果为真则重定向。但是,我建议您在IIS中重写URL。

按照此处的指南进行操作:http://www.dotnetexpertguide.com/2011/08/iis-7-redirect-domaincom-to.html这是为了让domain.com访问www.domain.com,但对于相反的情况,它的工作方式相同。

答案 1 :(得分:0)

你可以尝试这样的事情

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

答案 2 :(得分:0)

实际上,原始问题专门要求“软”重定向(201或202)而不是Moved Permanently / Found(301/302),所以我认为条件行应该是:<而不是Response.Redirect: / p>

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

编辑:我相信状态也可以直接设置,与Response.Redirect结合使用:

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

答案 3 :(得分:0)

如果您只想添加/追加标题信息,请使用Response.AppendHeader()

根据Ryan的回答,可以检查Request.Url.ToString()属性以查找您要查找的URL。

答案 4 :(得分:0)

如果我在这里没有完全遗漏某些内容,您是否只能在网站的IIS设置中设置主机标题,以包含www.domain.com和domain.com?