泛域名+IHttpModule实现二级域名

泛域名解析就不多说了,只要在IIS里主机头设置一下就ok了

C#程序

using System;
using System.Web;
using System.Configuration;
namespace GPageDomain
{
 ///


 /// Class1 的摘要说明。
 ///
 public class GDomain:System.Web.IHttpModule
 {
  private HttpApplication HttpApp;
  private string Hostdomain=System.Configuration.ConfigurationSettings.AppSettings["sys_url"].ToString().ToLower();//系统设置域名
  public void Init(HttpApplication application)
  {
   this.HttpApp = application;
   HttpApp.BeginRequest += new EventHandler(OnBeginRequest);

  } 
  public void OnBeginRequest(object sender, EventArgs e)
  {   
   string url=this.HttpApp.Request.Url.ToString().Substring(7).ToLower();
   string domain="";
   string tempurl="";
   string hostdomain=Hostdomain;
   if(hostdomain.Substring(hostdomain.Length-1)=="/")
    hostdomain=hostdomain.Substring(0,hostdomain.Length-1);
   if(url.IndexOf("/")>0)
   {
    domain=url.Substring(0,url.IndexOf("/"));
    tempurl=url.Substring(url.IndexOf("/"));
   }
   if(hostdomain.Substring(0,7)=="http://")
    hostdomain=hostdomain.Substring(7);
   if(hostdomain.Substring(0,4)=="www.")
    hostdomain=hostdomain.Substring(4);
   int iStart=domain.IndexOf(".")+1;
   if(iStart>0)
   {
    if(domain.Substring(iStart)==hostdomain || domain==hostdomain || domain.Substring(0,iStart)=="www")
    {
     //如果为主域名,进行转向
     //this.HttpApp.Response.Write("不需要转向"+"
");
    }
    else
    {
     if(domain.Substring(iStart)=="cn."+hostdomain)
     {
      //会员二级域名转向
      string userdomain=domain.Substring(0,iStart-1);
      string realurl=IHttpGetStaticPath(userdomain);
      if(tempurl!="")
       realurl+=tempurl;
      if(realurl.IndexOf("index.aspx")>0)
       realurl=realurl.Replace("index.aspx","index.html");
      try
      {
       this.HttpApp.Server.Transfer(realurl);
      }
      catch{}     
     }
     else
     {
     }
    }
   }
   else
   {

   }
  }
  ///


  /// 会员会员二级域名页面转向
  ///
  ///
  ///
  public string IHttpGetStaticPath(string strPath)
  {
   string strTempPath="";
   for(int i=0;i<4;i++)
   {
    strTempPath+=strPath[i].ToString()+"/"; 
   }
   strPath=strTempPath+strPath;
   return "/cpy/detail/"+strPath;

  }
  public void Dispose()
  {
   this.HttpApp=null;
  }
 }
}
web.config配置<system.web>
<httpModules>
  <add name="GDomain" type="GPageDomain.GDomain,GPageDomain"></add>
   </httpModules>
 </system.web>
 <appSettings>
  <!--域名地址相关-->
  <add key="sys_url" value=http://www.shenjk.com/>
</appSettings>

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值