UrlRewriter.dll伪静态实现二级域名泛解析

大家应该知道,微软的URLRewrite能够对URL进行重写,但是也只能对域名之后的部分进行重写,而不能对域名进行重写,

如:可将 http://http://www.115sou.com/qq/  重写为 http://www.115sou.com/show.aspx?id=qq

但不能将 http://qq.115sou.com/  重写为  http://www.115sou.com/index.aspx?id=qq。

要实现这个功能,前提条件就是  http://www.115sou.com/ 是泛解析的,再就是要修改一下URLRewriter了。 
总共要修改2个文件 

1.BaseModuleRewriter.cs

protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e) 
        { 
            HttpApplication app = (HttpApplication) sender; 
            Rewrite(app.Request.Path, app); 
        }

改为

protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e) 
        { 
            HttpApplication app = (HttpApplication) sender; 
            Rewrite(app.Request.Url.AbsoluteUri, app); 
        }

就是将  app.Request.Path 替换成了  app.Request.Url.AbsoluteUri

2.ModuleRewriter.cs

for(int i = 0; i < rules.Count; i++) 
            { 
                // get the pattern to look for, and Resolve the Url (convert ~ into the appropriate directory) 
                string lookFor = "^" + RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor) + "$"; 
 
                // Create a regex (note that IgnoreCase is set
                Regex re = new Regex(lookFor, RegexOptions.IgnoreCase); 
 
                // See if a match is found 
                if (re.IsMatch(requestedPath)) 
                { 
                    // match found - do any replacement needed 
                    string sendToUrl = RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, re.Replace(requestedPath, rules[i].SendTo)); 
 
                    // log rewriting information to the Trace object 
                    app.Context.Trace.Write("ModuleRewriter", "Rewriting URL to " + sendToUrl); 
 
                    // Rewrite the URL 
                    RewriterUtils.RewriteUrl(app.Context, sendToUrl); 
                    break;        // exit the for loop 
                } 
            }

改为

for(int i = 0; i < rules.Count; i++) 
            { 
                // get the pattern to look for, and Resolve the Url (convert ~ into the appropriate directory) 
                string lookFor = "^" + rules[i].LookFor + "$"; 
 
                // Create a regex (note that IgnoreCase is set
                Regex re = new Regex(lookFor, RegexOptions.IgnoreCase); 
 
                // See if a match is found 
                if (re.IsMatch(requestedPath)) 
                { 
                    // match found - do any replacement needed 
                    string sendToUrl = RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, re.Replace(requestedPath, rules[i].SendTo)); 
 
                    // log rewriting information to the Trace object 
                    app.Context.Trace.Write("ModuleRewriter", "Rewriting URL to " + sendToUrl); 
 
                    // Rewrite the URL 
                    RewriterUtils.RewriteUrl(app.Context, sendToUrl); 
                    break;        // exit the for loop 
                } 
            }

string lookFor = "^" + RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor) + "$";

改成了

string lookFor = "^" + rules[i].LookFor + "$";

完成这2处改动之后重新编译项目,将生成的dll复制到bin目录下。

再就是写web.config里的重写正则了

<RewriterRule>
            <LookFor>http://(\d+)\.115sou\.com/</LookFor>
            <SendTo>/show.aspx?id=$1</SendTo>
        </RewriterRule>

好了大功告成,你在IE地址栏输入http://shouji.115sou.com/,就可以看到http://www.115sou.com/index.aspx?id=shouji

的结果了

时间: 2025-01-17 15:47:53

UrlRewriter.dll伪静态实现二级域名泛解析的相关文章

MVC实现二级域名泛解析

1 public class DomainRoute : Route 2 { 3 private Regex domainRegex; 4 private Regex pathRegex; 5 6 public string Domain { get; set; } 7 8 public DomainRoute(string domain, string url, RouteValueDictionary defaults) 9 : base(url, defaults, new MvcRout

.net iis 域名泛解析实战

最近做个人网站想实现多个二级域名,一来为了好记,二来为了搜索引擎优化,搜索引擎对二级域名的收录还是比较快的.刚开始做了4,5个二级域名,每个都是在域名解析后台手动添加的,不过随着二级域名越来越多,发现这种方式太麻烦太累了,所以才想通过程序来实现多个二级域名的解析. 实现二级域名泛解析,首先要在域名管理后台添加一个泛解析 添加一条A记录 主机记录写成 *即可 如下图, 其次我们需要在iis上建立一个网站比如叫fanjiexi 主机头要留空 把默认页面设置为我们下面要用的页面fanjiexi.asp

IIS_域名泛解析+泛绑定

域名泛解析 cname->主机二级域名,或a->主机IP IIS主机泛绑定,目前我只知道单IP下,只能泛绑定一个域名, 如果有更好的办法,请求指点. 测试php 测试二级域名 域名还没正式上线,期待跟大家见面,谢谢

域名泛解析设置

接前一篇<MVC实现动态二级域名>,前面我们说道MVC如何实现动态二级域名,其中也涉及到DNS服务器,也要做相应的泛域名解析设置. 1.什么是泛域名解析 泛域名解析是指将*.域名解析到同一IP.在域名前添加任何子域名,均可访问到所指向的WEB地址.也就是将 *.xxx.com(*代表所有合法二级域名头,如:bbs www news)指向同一IP,服务器就同时绑定了所有.xxx.com的二级域名,不需要一个个绑定.例如:博客,电商平台的店铺,qq空间等.都是通过动态的二级域名的泛域名解析来实现的

VPS上域名泛解析设置方法

1.什么是泛域名解析? 泛域名解析是指将.域名解析到同一IP. 在域名前添加任何子域名,均可访问到所指向的WEB地址.也就是客户的域名http://a.com之下所设的.http://a.com全部解析到同一个IP地址上去. 比如客户设http://b.a.com就会自已自动解析到与http://a.com同一个IP地址上去. 2.泛域名解析域名域名解析的区别? 泛域名解析是:.域名解析到同一IP. 域名解析是:子域名.域名解析到同一IP. 注意:只有你的空间是独立IP的时候泛域名才有祝福短信意

域名解析和域名泛解析

域名解析和域名泛解析 由于建网站等一系列的需求现在注册域名的朋友是越来越多了,然而注册域名时经常会遇到一些不懂的问题,如域名解析和域名泛解析,不管你是CN域名注册用户还是com域名注册用户,都有可能域名域名解析和域名泛解析的问题,那么你知道什么是域名解析和域名泛解析么?下面我们就来了解下这方面的知识吧! 一.什么是域名解析? 域名解析就是域名到IP地址的转换过程.IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址.域名的解析工作由DNS服务器完成. 二.什么是

seo优化之域名泛解析优缺点分析

原文地址:http://www.phpddt.com/web/analysis-of-domain-name.html 自己也算半个SEOER,虽然没从事过优化工作,由于自己很感兴趣,每天还是会去看很多关于SEO文章.因为自己正想给博客开几个子域名,了解了下域名泛解析.域名泛解析是指将*.域名解析到同一IP.那么在域名前添加任何子域名,均可访问到所指向的WEB地址. 优点: 1.会增加网站收录. 2.防止用户输错网址不能访问,比如说用户输错网址ww.phpddt.com依然能够访问网站. 3.支

window server 2008 r2- Dns 泛解析 --任意二级域名自动解析同一个网站

Dns 泛解析 简介:泛解析,作用于dns 用于域名解析到对应的ip,泛解析只针对dns,iis是无法实现的(dns只有在服务器系统上才有) window server 2008 R2 在右键计算机,管理角色,添加dns 服务器 具体安装教程请看 http://www.jb51.net/os/windows/win2008/218523.html 二.配置解析说明 配置dns 服务器 具体可查看:http://www.chinaz.com/server/2007/0904/15597.shtml

黑帽技术之域名泛解析泛域名操作

首先说下泛解析.泛域名的原理! 正常的话:把 aaa.baidu.com 解析到IP 8.8.8.8 上,那么只能单独访问 aaa.baidu.com 把 bbb.baidu.com 解析到IP 8.8.8.8 上,那么只能单独访问 bbb.baidu.com 而如果是泛解析域名的话:把 .baidu.com 解析到IP 8.8.8.8 上,那么这个时候,不管用什么代替,都是访问解析的IP 8.8.8.8 了! 任意一个二级域名的前缀,都是访问相同的解析IP地址!a.baidu.comb.bai