中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

asp.net實現網站首頁根據IP自動跳轉指定頁面

發布時間:2021-07-27 11:20:43 來源:億速云 閱讀:170 作者:chen 欄目:開發技術

這篇文章主要講解了“asp.net實現網站首頁根據IP自動跳轉指定頁面”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“asp.net實現網站首頁根據IP自動跳轉指定頁面”吧!

對于大中型網站,為了增強用戶體驗,往往需要根據不同城市站點的用戶推送或展現相應個性化的內容,如對于一些大型門戶網站的新聞會有城市站點的功能,如果沒有設置相應的城市站點,默認就是根據用戶訪問的IP地址的所在城市自動設置。本文主要通過自定義擴展IHttpModule接口,考慮到性能IP數據庫主要采用QQwry純真IP數據庫,主要實現根據IP地址或地址段或IP所在城市進行自動跳轉到指定頁面的功能(支持Nginx作為前端反向代理服務器),該WebsiteSkip組件核心代碼如下:

復制代碼 代碼如下:


using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Xml;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;
using NetOpen_System.Component.QQWry;

namespace NetOpen_System.Component
{
    public sealed class WebsiteSkipHttpModule : IHttpModule
    {
        #region IHttpModule 成員

        public void Dispose()
        {
        }

        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
        }

 
        #endregion

 
        void context_BeginRequest(object sender, EventArgs e)
        {
            try
            {

                //if (HttpContext.Current.Request.IsLocal)//忽略本地計算機請求
                //    return;

                //string ip = HttpContext.Current.Request.UserHostAddress;
                //string ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
                string ip = string.Empty;
                if (HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"] != null)
                {
                    ip = HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"].ToString();
                }
                else if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
                {
                    ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
                }
                else if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
                {
                    ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
                }
                else
                {
                    ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
                }

 
                QQWryLocator qqWry = new QQWryLocator(HttpContext.Current.Server.MapPath(@"~\IpData\qqwry.dat"));

                IPLocation ipaddress = qqWry.Query(ip);  //查詢一個IP地址

                string ls_city = ipaddress.Country;
                string ls_urlfrom = string.Empty;
                string ls_urlto = string.Empty;
                string ls_url = HttpContext.Current.Request.Url.AbsoluteUri;
                string ls_useragentkeyword = string.Empty;

                ExcludeUserAgentMatchEngine Em = WebsiteSkipConfiguration.GetConfig().ExcludeUserAgents;

                if(Em.ExcludeUserAgentList.Count > 0)
                {
                    foreach (ExcludeUserAgent ua in Em.ExcludeUserAgentList)
                    {
                        if (HttpContext.Current.Request.UserAgent.Contains(ua.keyword))
                        {
                            return;
                        }
                    }
                }

                UrlMatchEngine pu = WebsiteSkipConfiguration.GetConfig().SkipedUrls;

                if (pu.UrlList.Count > 0)
                {
                    foreach (SkipedUrl sk in pu.UrlList)
                    {

                        if (ls_city.Contains(sk.IpCity))
                        {
                            if (sk.UrlFrom.Length > 0)
                            {
                                if (sk.UrlFrom.Contains(ls_url) && !ls_url.Contains(sk.OutKeyWord))
                                {
                                    if (sk.UrlTo.Length > 0)
                                    {
                                        HttpContext.Current.Response.Redirect(sk.UrlTo, true);
                                    }
                                    break;
                                }

                            }

                            break;
                        }
                    }
                }

                if (WebsiteSkipConfiguration.GetConfig().IpChecks.GetIpIn(ip))
                {
                    ls_urlfrom = WebsiteSkipConfiguration.GetConfig().IpChecks.UrlFrom.Trim();
                    ls_urlto = WebsiteSkipConfiguration.GetConfig().IpChecks.UrlTo.Trim();
                    if (ls_urlfrom.Length > 0)
                    {

                        if (ls_urlfrom.Contains(ls_url) && !ls_url.Contains(WebsiteSkipConfiguration.GetConfig().IpChecks.OutKeyWord))
                        {
                            if (ls_urlto.Length > 0)
                            {
                                HttpContext.Current.Response.Redirect(ls_urlto, true);
                            }

                        }

                   
                    }
                }

                
            }
            catch
            {

            }
        }
    }
}

在部署方面,非常簡單主要利用IHttpModule接口并在Web.config中的HttpModule節點添加此組件的配置,訪問限制或允許參數可以在NetOpen_SystemWebsiteSkip.cfg.xml進行設置,以下為一個簡單的配置示例:

復制代碼 代碼如下:


<?xml version="1.0" encoding="utf-8" ?>
<NetOpen_System>
  <WebsiteSkip>
    <SkipedUrl>
    <add ipcity="溫州" urlfrom="http://examplesite.com/Default.aspx,http://examplesite.com/,http://examplesite.cn/,http://www.examplesite.cn" urlto="http://wz.mainwebsite.pcom/index.aspx" outkeyword="math"/>
    <add ipcity="鎮江" urlfrom="http://examplesite.com/Default.aspx,http://examplesite.com/,http://examplesite.cn/,http://www.examplesite.cn" urlto="http://jszj.mainwebsite.com/index.aspx" outkeyword="math"/>
    </SkipedUrl>
    <SkipedIP>
     <add ip1="220.186.0.0" ip2="220.186.255.255" urlfrom="http://examplesite.com/Default.aspx,http://examplesite.com/,http://examplesite.cn/,http://www.examplesite.cn" urlto="http://wz.mainwebsite.com/index.aspx" outkeyword="math"/>
    </SkipedIP>
    <ExcludeUserAgent>
     <add keyword="Baiduspider">
     <add keyword="Sosospider">
     <add keyword="Sogou web spider">
     <add keyword="Sogou inst spider">
     <add keyword="Sogou-Test-Spider">
     <add keyword="Sogou Orion spider">
     <add keyword="Gigabot">
     <add keyword="0JJJSpider">
     <add keyword="Sogou Pic Spider">
     <add keyword="Googlebot">
     <add keyword="Yeti/1.0">
    </ExcludeUserAgent>
  </WebsiteSkip>
  </WebsiteSkip>
</NetOpen_System>

感謝各位的閱讀,以上就是“asp.net實現網站首頁根據IP自動跳轉指定頁面”的內容了,經過本文的學習后,相信大家對asp.net實現網站首頁根據IP自動跳轉指定頁面這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陇川县| 华池县| 武威市| 衡山县| 阳朔县| 菏泽市| 江川县| 克拉玛依市| 马公市| 崇阳县| 阿拉尔市| 冕宁县| 卫辉市| 聂荣县| 兴文县| 海城市| 儋州市| 马尔康县| 沙湾县| 富锦市| 孝昌县| 永福县| 鄯善县| 万荣县| 苏尼特右旗| 柘荣县| 芜湖市| 湛江市| 邵阳市| 河南省| 赤峰市| 内丘县| 龙陵县| 宜黄县| 澄江县| 海门市| 昂仁县| 齐齐哈尔市| 东莞市| 观塘区| 大田县|