一区在线电影,国产在线首页,中文字幕精,天天爽天天射,夜色99,日韩国产成人av,伊人久久综合视频

威勢網(wǎng)絡(luò),為您的企業(yè)和團(tuán)隊(duì)注入互聯(lián)網(wǎng)活力!
服務(wù)熱線:138-9741-0341

C# UrlRewrite

發(fā)布日期:2022/8/31 作者: 瀏覽:716
using System;
using System.Web;
using System.Text.RegularExpressions;
using System.Xml;

/// <summary>
///UrlRewrit 
/// </summary>
namespace qhwins.SEO
{
    //繼承自IHttpModule接口
    public class HttpModule : System.Web.IHttpModule
    {
        /**//// <summary>
        /// 實(shí)現(xiàn)接口的Init方法
        /// </summary>
        /// <param name="context"></param>
        public void Init(HttpApplication context)
        {
            //建立個委托讓他執(zhí)行下面的ReUrl_BeginRequest事件
            context.BeginRequest += new EventHandler(ReUrl_BeginRequest);
        }
        /**//// <summary>
        /// 實(shí)現(xiàn)接口的Dispose方法
        /// </summary>
        public void Dispose()
        {
        }
        private void ReUrl_BeginRequest(object sender, EventArgs e)
        {
            HttpContext context = ((HttpApplication)sender).Context;
            string requestPath = context.Request.Path.ToLower();
            //SiteUrls是下面的一個類,這里大家可以重構(gòu)下
            foreach (SiteUrls.URLRewrite url in SiteUrls.GetSiteUrls().Urls)
            {
                //是否找到了匹配選項(xiàng)
                if (Regex.IsMatch(requestPath, url.Pattern, RegexOptions.None | RegexOptions.IgnoreCase))
                {
                    //開始替換成我們程序能讀懂的url
                    //string newUrl = Regex.Replace(requestPath.Substring(context.Request.Path.LastIndexOf("/")), url.Pattern, url.QueryString, RegexOptions.None | RegexOptions.IgnoreCase);
                    //context.Response.Write("input=" + requestPath.Substring(context.Request.Path.IndexOf("/")) + "<br/>Pattern=" + url.Pattern + "<br/>" + "url.QueryString=" + url.QueryString + "<br/>");
                    string newUrl = Regex.Replace(requestPath.Substring(context.Request.Path.IndexOf("/")), url.Pattern, url.QueryString, RegexOptions.None | RegexOptions.IgnoreCase);
                    //這里你可以輸出一下看看
                    //context.Response.Write("<br/>url.Page=" + url.Page + "<br>newUrl=" + newUrl + "<br>");
                    //context.Response.End();
                    //開始把用戶便于記憶的URL替換成程序能讀懂的url
                    //context.Response.Write("url.Page=" + url.Page + "<br/>newUrl=" + newUrl);
                    context.RewritePath(url.Page, string.Empty, newUrl); //參數(shù)說明:虛擬路徑、路徑信息、查詢字符串信息
                }
            }
        }
    }
    public class SiteUrls
    {
        //定義成volatitle類型主要是為了多線程訪問方便,在這個示例程序中沒什么實(shí)際意義,項(xiàng)目大了就有用了
        private static volatile SiteUrls instance = null;
        string UrlsFile = HttpContext.Current.Server.MapPath("~/config/urls.config");
        //定義兩個屬性
        private System.Collections.ArrayList _Urls;
        public System.Collections.ArrayList Urls
        {
            get { return _Urls; }
            set { _Urls = value; }
        }
        //這個就是個鍵植對 表害怕一點(diǎn)也不高深
        private System.Collections.Specialized.NameValueCollection _Paths;
        public System.Collections.Specialized.NameValueCollection Paths
        {
            get { return _Paths; }
            set { _Paths = value; }
        }
        //構(gòu)造函數(shù)
        private SiteUrls()
        {
            Urls = new System.Collections.ArrayList();            
            Paths = new System.Collections.Specialized.NameValueCollection();
            //以XML個數(shù)讀取那CONFIG文件
            XmlDocument urlconfig = new XmlDocument();
            urlconfig.Load(UrlsFile);
            XmlNode root = urlconfig.SelectSingleNode("urls");
            foreach (XmlNode n in root.ChildNodes)
            {
                //XmlNodeType.Comment如果不是注釋
                if (n.NodeType != XmlNodeType.Comment && n.Name.ToLower() == "rewrite")
                {
                    XmlAttribute name = n.Attributes["name"];
                    XmlAttribute path = n.Attributes["path"];
                    XmlAttribute page = n.Attributes["page"];
                    XmlAttribute querystring = n.Attributes["querystring"];
                    XmlAttribute pattern = n.Attributes["pattern"];

                    if (name != null && path != null && page != null && querystring != null && pattern != null)
                    {
                        Paths.Add(name.Value, path.Value);
                        //壓進(jìn)去的都是url實(shí)體類
                        Urls.Add(new URLRewrite(name.Value, pattern.Value, page.Value.Replace("^", "&"), querystring.Value.Replace("^", "&")));
                    }
                }
            }
        }
        //用方法實(shí)例化
        public static SiteUrls GetSiteUrls()
        {
            if (instance == null)
            {
                instance = new SiteUrls();
            }
            return instance;
        }
       // url實(shí)體類#region url實(shí)體類
        public class URLRewrite
        {
           // 成員變量#region 成員變量
            private string _Name;
            public string Name
            {
                get
                {
                    return _Name;
                }
                set
                {
                    _Name = value;
                }
            }

            private string _Pattern;
            public string Pattern
            {
                get
                {
                    return _Pattern;
                }
                set
                {
                    _Pattern = value;
                }
            }

            private string _Page;
            public string Page
            {
                get
                {
                    return _Page;
                }
                set
                {
                    _Page = value;
                }
            }

            private string _QueryString;
            public string QueryString
            {
                get
                {
                    return _QueryString;
                }
                set
                {
                    _QueryString = value;
                }
            }

           // 構(gòu)造函數(shù)#region 構(gòu)造函數(shù)
            public URLRewrite(string name, string pattern, string page, string querystring)
            {
                _Name = name;
                _Pattern = pattern;
                _Page = page;
                _QueryString = querystring;
            }
            //#endregion
        }
        //#endregion
    }

}


定義:


<?xml version="1.0" encoding="utf-8"?>
<urls>
	<!--<rewrite name="default" path="/default-{0}-{1}.aspx" pattern = "/default-(\d+)(-(\d+))?.aspx" page="/default.aspx" querystring="id=$1^page=$3" />-->
	<!--<rewrite name="Flower" path="/Flower-{0}.aspx" pattern = "^/Flower-(\d{1,4}).aspx$" page="/Flower.aspx" querystring="page=$1" />-->
	<rewrite name="Default" path="/Default.html" pattern = "^/default.html$" page="/default.aspx" querystring="" />  <!--首頁-->
  <rewrite name="Job" path="/job.html" pattern = "^/job.html$" page="/job.aspx" querystring="" />  <!--人才-->
  <rewrite name="News" path="/nl/{0}-{1}.html" pattern = "^/nl/(\d{1,6})(-(\d{1,4}))?.html$" page="/News.aspx" querystring="ClassCode=$1^page=$3" />
</urls>
使用,在webconfig中配置



<system.web>
... ...
		<httpModules>
			<add type="qhwins.SEO.HttpModule" name="HttpModule"/>
		</httpModules>
		<pages validateRequest="false" enableSessionState="true" enableViewStateMac="false"></pages>
		<globalization fileEncoding="utf-8"/>
		<machineKey validation="3DES" validationKey="318W9AF6GC2B7A87C996B280450BB36506A8DFEDF9B51211" decryption="3DES" decryptionKey="998950BB36319B474C996B506A95AEDF9B51211B1DA7B287"/>
</system.web>



下拉加載更多評論
最新評論
暫無!