当前位置:  开发笔记 > 编程语言 > 正文

如何使用"www"URL重定向到没有"www"URL,反之亦然?

如何解决《如何使用"www"URL重定向到没有"www"URL,反之亦然?》经验,为你挑选了3个好方法。

我正在使用ASP.NET 2.0 C#.我想用"www"将我对web应用的所有请求重定向到没有"www"

www.example.com到example.com

要么

example.com到www.example.com

Stackoverflow.com已经这样做了,我知道PHP(.htaccess)文件中有预制机制.但是如何在asp.net中做到这一点?

谢谢



1> shsteimer..:

有关于此的Stackoverflow博客文章.

http://blog.stackoverflow.com/2008/06/dropping-the-www-prefix/

引用杰夫:

这是从所有传入的URL中删除WWW前缀的IIS7规则.将此XML片段剪切并粘贴到您的web.config文件下

 /  / 








或者,如果您更喜欢使用www前缀,也可以这样做:









也许我错过了一些东西,但你接受的答案要求你修改web.config.我的回答还要求你修改web.config.

2> Zhaph - Ben ..:

当我无法修改IIS设置时,我已经使用了以下解决方案.

在ApplicationMeginRequest中的HTTPModule(可能是最干净的)或global.asax.cs中,或者在某些BasePage类型事件中,例如OnInit,我使用我希望使用的已知字符串对请求的URL执行检查:

public class SeoUrls : IHttpModule
{
  #region IHttpModule Members

  public void Init(HttpApplication context)
  {
      context.PreRequestHandlerExecute += OnPreRequestHandlerExecute;
  }

  public void Dispose()
  {
  }

  #endregion

  private void OnPreRequestHandlerExecute(object sender, EventArgs e)
  {
    HttpContext ctx = ((HttpApplication) sender).Context;
    IHttpHandler handler = ctx.Handler;

    // Only worry about redirecting pages at this point
    // static files might be coming from a different domain
    if (handler is Page)
    {
      if (Ctx.Request.Url.Host != WebConfigurationManager.AppSettings["FullHost"])
      {
        UriBuilder uri = new UriBuilder(ctx.Request.Url);

        uri.Host = WebConfigurationManager.AppSettings["FullHost"];

        // Perform a permanent redirect - I've generally implemented this as an 
        // extension method so I can use Response.PermanentRedirect(uri)
        // but expanded here for obviousness:
        response.AddHeader("Location", uri);
        response.StatusCode = 301;
        response.StatusDescription = "Moved Permanently";
        response.End();
      }
    }
  }
}

然后在web.config中注册该类:


  [...]
  

这种方法对我们很有效.



3> Peter J..:

接受的答案适用于单个URL或只是少数几个,但我的应用程序提供数百个域名(手动输入的URL太多).

这是我的IIS7 URL重写模块规则(此处的操作类型实际上是301重定向,而不是"重写").效果很好:


  
  
   
  
  

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有