大家应该知道,微软的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

的结果了

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

  1. .net iis 域名泛解析实战

    最近做个人网站想实现多个二级域名,一来为了好记,二来为了搜索引擎优化,搜索引擎对二级域名的收录还是比较快的.刚开始做了4,5个二级域名,每个都是在域名解析后台手动添加的,不过随着二级域名越来越多,发现 ...

  2. nginx 域名泛解析

    部分应用场景下要求服务器根据客户输入的二级域名地址自动访问不同的页面,比如一个服务器放置了不同的业务,商城.官网等多个业务,又不想一个个配置server, 网站目录结构入戏: html 网站根目录 m ...

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

    原文地址:http://www.phpddt.com/web/analysis-of-domain-name.html 自己也算半个SEOER,虽然没从事过优化工作,由于自己很感兴趣,每天还是会去看很 ...

  4. 在Apache中利用ServerAlias设置虚拟主机接收多个域名和设置域名泛解析

    ServerAlias:服务器别名,在Apache中可以用于设置虚拟主机接收到个域名,也可以用于接收泛解析的域名.具体的设置方法如下: 一.用于设置虚拟主机接收多个域名 一个虚拟主机常常会接收多个域名 ...

  5. ASP.NET MVC 域名泛解析设置

    最近有个需求要做一个动态二级域名的网站,我们可以通过这样的方式去访问我们的网站 http://用户名.blog.com.而这里的用户名是根据程序的需要动态生成的.这里就会涉及到DNS服务器,要做相应的 ...

  6. asp.net下通过泛解析和伪静态实现二级域名的实现方法

    在net中微软已经为我们留下了接口,让我们为所欲为了. 首先我们可以通过一张图大概了解下.net的生命周期. 从 上图可以看出来,针对每个不同用户的请求,服务器都会创建一个新的HttpContext实 ...

  7. IIS URL重写找不到页面 (URLRewriter.dll伪静态)

    在网站上点右键 属性 进入主目录菜单 点击配置 找到.html扩展名 编辑 将 检查文件是否存在 的钩去掉! OK

  8. 借助微软提供的url重写类库URLRewriter.dll(1.0)实现程序自动二级域名,域名需要泛解析

    二级域名和系统中会员帐号自动关联,也就是系统中注册一个会员,会员自动就可以通过二级域名来访问,比如我的帐号是zhangsan,我在morecoder.com注册后,访问zhangsan.morecod ...

  9. 用phpcms切换中英文网页的方法(不用解析二级域名)、phpcms完成pc和手机端切换(同一域名)

    AA.phpcms进行双语切换方法(不用解析二级域名)作者:悦悦 博客地址:http://www.cnblogs.com/nuanai/ phpcms进行两种语言的切换,有一把部分的人都是进行的二级域 ...

随机推荐

  1. Django 学习笔记之四 QuerySet常用方法

    QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...

  2. C# - 设置DLL的属性Embed Interop Type 设为False

    错误: Error msg: A reference was created to embedded interop assembly. because of an indirect referenc ...

  3. STS中取消show in Breadcrumb方法

    前言:STS是Spring产品下的一个开发工具,它和eclipse很像,只不过对Spring有更好的兼容.Show in Breadcrumb是快速导航条,可以清晰的看到我们当前的类,属性或方法的导航 ...

  4. EXT经验--查询items的xtype

    前言:EXT由多个组件组成,每个组件可配置多个子组件(items),而每个子组件也可嵌套多个子组件(items)--给人一种子子孙孙无穷匮也的印象,这对于初学者引来一个很重要的问题,特别是阅读他人编写 ...

  5. android控件---spinner

    spinner下拉列表框的列表项有两种配置方式: 1.通过资源文件配置,通过在values种的xml,比如strings.xml中使用<string-array>元素添加制定列表项内容,然 ...

  6. NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1)

    NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1) ARGUS 1月13日 发布 推荐 0 推荐 收藏 3 收藏,839 浏览 nginx的if支持=.!= 逻辑比较, 但不支持if中 & ...

  7. C++编写Config类读取配置文件

    老外写的一段代码,在Server中编写这个类读取配置文件比较实用 //Config.h #pragma once #include <string> #include <map> ...

  8. C# 常用的工具类

    编码解码.图片与byte[].日志文件写入和读取 /// <summary> /// 将字符串编码为Base64字符串 /// </summary> /// <param ...

  9. POJ2411 Mondriaan's Dream 轮廓线dp

    第一道轮廓线dp,因为不会轮廓线dp我们在南京区域赛的时候没有拿到银,可见知识点的欠缺是我薄弱的环节. 题目就是要你用1*2的多米诺骨排填充一个大小n*m(n,m<=11)的棋盘,问填满它有多少 ...

  10. POJ 1062 昂贵的聘礼(Dijkstra)

    题意 : 真真是做POJ第一次遇到中文题,好吧,虽然语言通了,我一开始也没看懂样例什么意思,题意的话就是说这个探险家想娶酋长的女儿,但是没有钱,酋长说他可以用祭司的水晶球或者皮袄来换取少花一部分钱,同 ...