zoukankan      html  css  js  c++  java
  • 巧用httpModules实现网站域名更换

    朋友的网站,原来的域名是 sitea.com,现在要换成siteb.com。当然sitea.com还未到期,要过度一段时间。网上看了这篇文章。

    seo网站如何实现301跳转?http://smt.fortuneage.com/uemarketer/18655-155226.aspx

    是这么个意思,如何在asp.net实现。 以前实现过泛域名,用的是URLRewriter,前几天看NHibernate的一些东西,也有朋友通过httpModules实现每个请求创建一个session连接,请求结束后释放session。

    是啊,微软就提供了这么一个类似管道链的东西,一个一个Modules挨着处理。当然,也可以通过这种方法,判断只有认证过的用户才能下载对应扩展名的文件,也就是在交给最终成现之前先截获进行处理。

    当然你可以自己新建一个类,继承于public class GoXueHttpModule : IHttpModule

    public class GoXueHttpModule : IHttpModule
        {

            /// <summary>
            /// 构造函数
            /// </summary>
            public GoXueHttpModule()
            {

            }

            #region IHttpModule 成员
            /// <summary>
            /// 释放
            /// </summary>
            public void Dispose()
            {

            }

            /// <summary>
            /// 初始化
            /// </summary>
            /// <param name="context">http应用程序</param>
            public void Init(HttpApplication context)
            {
                context.BeginRequest += new EventHandler(Context_BeginRequest);
                //关闭页面的时候
                //context.EndRequest += new EventHandler(Context_EndRequest);
            }
            #endregion

            /// <summary>
            /// 开始请求
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void Context_BeginRequest(object sender, EventArgs e)
            {
                string url = HttpContext.Current.Request.Url.ToString();
                if (url.Contains("sitea.com"))
                {
                    string url2 = url.Replace("sitea.com", "siteb.com");
                    HttpContext.Current.Response.Status = "301 Moved Permanently";
                    HttpContext.Current.Response.AddHeader("Location", url2);
                    HttpContext.Current.Response.End();
                }
                else
                {
                    HttpContext.Current.Response.Redirect(url);
                }

            }

            /// <summary>
            /// 结束请求
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void Context_EndRequest(object sender, EventArgs e)
            {
              }

        }

    当然,上面的红色的,可以直接写在URLRewriter.ModuleRewriter,这样既实现了二级域名,又实现了域名的变更。

    同时,旧的访问方式可以不变,通过旧的搜索引擎地址过来的,也会用新的域名的网址来显示。

  • 相关阅读:
    Mac + Python3 安装scrapy
    Pyqt4+Eric6+python2.7.13(windows)
    js基础⑥
    python模块之os,sys
    Python模块之random
    Python模块之PIL
    js基础⑤
    js基础④
    js基础③
    centOS目录结构详细版
  • 原文地址:https://www.cnblogs.com/huang/p/1641393.html
Copyright © 2011-2022 走看看