2

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

非常感谢 !

4

5 回答 5

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,但它的工作原理相同相反的方式。

于 2012-12-27T14:33:12.257 回答
0

如果我在这里没有完全遗漏一些东西,你不能在 IIS 设置中为该站点设置主机头以包括 www.domain.com 和 domain.com 吗?

于 2012-12-28T18:42:44.343 回答
0

实际上,原始问题专门要求“软”重定向(201 或 202)而不是永久移动/找到(301/302),所以我认为条件行应该是 Response.Redirect 而不是:

 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";
 }
于 2012-12-27T14:38:47.910 回答
0

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

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

于 2012-12-27T14:38:52.620 回答
0

你可以试试这样的

 if(!Request.Url.Host.Equals("www.mywebsite.com"))
 {
      Response.Redirect("website");
 }
于 2012-12-27T14:28:54.667 回答