C# 根据URL重定向ASP.NET中的网页
我有一个域名叫mywebsite.com,但我更喜欢用户通过www子域访问我的网站 如何在asp.net mvc3中轻松实现验证和重定向 当我使用php时,我做了类似的事情:C# 根据URL重定向ASP.NET中的网页,c#,asp.net,asp.net-mvc-3,redirect,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.NETC中实现这种重定向。我不希望设置301重定向,而只是像我在PHP中使用的那样设置软重定向 我知
if($_SERVER['SERVER_NAME'] != "www.mywebsite.com")
header('Location: www.mywebsite.com');
我想找到一种类似的方法在asp.NETC中实现这种重定向。我不希望设置301重定向,而只是像我在PHP中使用的那样设置软重定向
我知道,如果用户不在子域www.mywebsite.com上,我可以在我的每个控制器操作方法和重定向用户中进行验证,但我更愿意在验证和重定向后写一次,我找不到:/
非常感谢 你可以试试这样的东西
if(!Request.Url.Host.Equals("www.mywebsite.com"))
{
Response.Redirect("website");
}
您可以使用:
Request.Url.ToString()
这将返回URL,然后您可以快速检查它是否包含“www.”,如果为真,则重定向。不过,我建议您在IIS中的URL重写中处理此问题
按照此处的指南操作:这是为了让domain.com访问www.domain.com,但它的工作方式与之相反。实际上,最初的问题专门要求“软”重定向201或202,而不是永久移动/找到301/302,因此我认为不是响应。重定向条件行应该是:
if(!Request.Url.Host.Equals("www.mywebsite.com"))
{
HttpContext.Current.Response.Headers.Add("Location", "www.mywebsite.com");
}
编辑:我相信状态也可以直接设置,与响应一起使用。重定向:
if(!Request.Url.Host.Equals("www.mywebsite.com"))
{
HttpContext.Current.Response.Redirect("www.mywebsite.com");
HttpContext.Current.Response.Status = "201 Created";
}
如果您只想添加/附加标题信息,请使用
根据Ryan的回答,可以检查Request.Url.ToString属性以查找您要查找的Url 如果我在这里没有完全遗漏什么,您能否在IIS设置中为站点设置主机头,使其同时包含www.domain.com和domain.com 我将尝试通过IIS管理器访问IIS,因为我有一个共享的windows主机,但通常情况下它会正常运行,谢谢:如果无法通过面板访问,您可以让您的主机为您执行此操作,他们会这样做,因为这是一件非常基本的事情:我通过IIS管理器-Url重写模块进行了设置。有一个助手创建了一个新的规则,我只需要选择主域,它是重定向上的另一个!我知道我可以用这种方式验证主机,但是我可以把代码放在哪里呢?我不想复制/跳过或调用我所有控制器的每个操作方法中的方法:/Pot it in your master’s page Load我没有母版页,因为我正在执行MVC3 asp.net应用程序。因此,我只有共享视图而不是母版页:谢谢,这完全符合我的要求,但我是否必须将这段代码放在我所有控制器的每个操作方法中,或者我是否可以找到一个地方,在那里我只能放一次,它将控制所有控制器和操作,例如Global.asax?有几种实现方法这在经典的WebForms应用程序中,您可以创建一个继承自基本System.Web.UI.Page类的类,在Page_Load事件中实现此内容,并在创建的每个新页面上继承自此新类,而不是System.Web.UI.Page。您还可以实现一个HTTP模块来拦截所有HTTP请求,并在PostAcquireRequestState事件的处理程序上实现它!如果您还有任何问题,请随时提问。我目前正在使用这个片段:if!Request.Url.ToString.StartsWithwww{Response.AddHeaderLocation,+Request.RawUrl;}位于作为入口点的my Home Controller的索引方法中。但有时用户通过另一个控制器和/或操作到达我的网站,因此验证没有完成。