實現網站注冊用戶動態綁定個域名
老板說要建個二極域名,下面將二級域名的實現方式貼出來:
第一步:把域名設置成泛解析.
就是把*.域名 解析到你的主機,是否支持泛解析,請查看你的域名商說明.
第二步:IIS設成的時候不要綁定域名.注意一台服務器裡只能有一個站點不綁定域名
就是*.域名的默認訪問頁.
第三步:默認頁裡加入以下代碼:關鍵部分如下:
string sURL=Context.Request.ServerVariables["HTTP_HOST"].ToLower();
sURL就是獲取的域名部分 .
xxx.域名
對應的xxx就是用戶名.然後查庫裡的記錄,如xxx對應的是www.csdn.Net那就就把
它轉向到www.csdn.Net 或者寫一個框架頁隱藏直實域名
第三步也可以寫成HttpHandler或者HttpModule模塊來處理
HttpHandler模塊:
public class DnsHttpHandler: IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string sUSER;
UserDns user;
string userDomain = string.Empty;
string sURL = context.Request.ServerVariables["HTTP_HOST"].ToLower();
if (sURL.IndexOf("@" == -1 && sURL.IndexOf("." == -1)))
{
//判段域名,轉向默認網址
context.Response.Redirect(DnsConfiguration.GetConfig().DefaultURL, true);
}
#region myhome設置
if (sURL == "保留域名")
{
context.Response.Redirect(DnsConfiguration.GetConfig().DefaultURL, true);
}
#endregion
#region 判段並獲取用戶名
sUSER = Utility.DomainToUser(sURL);
userDomain = Utility.GetFirstDomain(sURL);
//context.Response.Write(userDomain);
&nbs
p; //context.Response.End();
user = Users.GetUserDns(sUSER, userDomain);
if (user == null)
{
context.Response.Redirect(DnsConfiguration.GetConfig().DefaultURL, true);
}
context.Response.Write("<meta http-equiv=refresh content=\"0;url=" + user.RedirectURL.Trim() + "\">");
#endregion
}
public bool IsReusable
{
get
{
return false;
}
}
}
提取用戶名模塊:
public class Utility
{
public static string DomainToUser(string domain)
{
string username = string.Empty;
string[] first_name;
#region 判段並獲取用戶名
if (domain.IndexOf("@" == -1 && domain.IndexOf("." == -1)))
{
return username;
}
if (domain.IndexOf("." != -1))
{
first_name = domain.Split(''.'');
if (first_name[0] == "www")
{
return username;
}
public static string GetFirstDomain(string domain)
{
string[] first_name;
domain = domain.Replace(''@'', ''.'');
string temp = string.Empty;
if (domain.StartsWith("www."))
{
domain = domain.Replace("www.",