c# - 如何使用“ www” URL重定向到没有“ www” URL的站点,反之亦然?

我正在使用ASP.NET 2.0 C。我想将所有带有“www”的web应用请求重定向到没有“www”的
www.example.com到example.com

example.com到www.example.com
stackoverflow.com已经在这样做了,我知道php(.htaccess)文件中有一个预编码机制。但是如何在asp.net中实现呢?
谢谢

最佳答案

在过去,当我无法修改IIS设置时,我使用了以下解决方案。
在httpmodule(可能是cleanest)中,或在application_beginrequest中的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中注册该类:
<httpModules>
  [...]
  <add type="[Namespace.]SeoUrls, [AssemblyName], [Version=x.x.x.x, Culture=neutral, PublicKeyToken=933d439bb833333a]" name="SeoUrls"/>
</httpModules>

这种方法对我们很有效。

本文翻译自 https://stackoverflow.com/questions/521804/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 c# asp.net redirect canonical-name


相关文章:

java - OnPostExecute永远不会被调用

c# - ASP.Net MVC3:UrlHelper扩展方法需要参数

c# - 最好在哪里存储临时反序列化数据?

javascript - 正确迭代JSON返回

python - 在下一个视图中获取如何使用HttpRedirect调用该视图

linux - 重定向时命令输出失败

javascript - 如何在通过Heroku部署的GoDaddy上添加裸域(没有www)?

c# - 有没有办法回头忽略正则表达式中的特定字母?

c# - 最初禁用的按钮在被Javascript启用后不会回发

c# - 使用MailKit库保存附件?