千家信息网

ASP.NET下用URLRewriter重写二级域名的步骤

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"ASP.NET下用URLRewriter重写二级域名的步骤",在日常操作中,相信很多人在ASP.NET下用URLRewriter重写二级域名的步骤问题上存在疑惑,小编查阅了各式资料,
千家信息网最后更新 2026年10月31日ASP.NET下用URLRewriter重写二级域名的步骤

这篇文章主要介绍"ASP.NET下用URLRewriter重写二级域名的步骤",在日常操作中,相信很多人在ASP.NET下用URLRewriter重写二级域名的步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"ASP.NET下用URLRewriter重写二级域名的步骤"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

这里要求对域名进行重写,实现http://1234.abc.com/ 到 ~/Defa.aspx?id=1234的重写。

***:域名

首先域名要支持泛解悉,就是域名解悉的主机名为星号*,例:*.abc.com。如下图


这样能保证你在浏览器地址栏输入任何前缀,DNS都会把它们指向到你指定的IP地址上。

第二:IIS设置(Win2003 + IIS 6为例)

(1)网站必须为Web服务器的默认站点,即端口号为80,主机头为空的站点。如下图所示。


该站点接收所有对该服务器的HTTP请求(其它设置为主机头的站点除外)。所以任何二级域名访问该服务器都会由该站点进行处理。

(2)另外要在站点的"通配符应用程序映射"列表中添加ASP.NET的Web请求处理程序aspnet_isapi.dll。如下图所示。


在这里的设置,是让该站点接到的所有请求都交给aspnet_isapi.dll处理。

第三:修改Microsoft的URLRewriter。

运行开源项目URLRewriter。这里需要修改两个地方:

(1)BaseModuleRewriter.cs类

 protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e)    {    HttpApplication app = (HttpApplication) sender;    //Rewrite(app.Request.Path, app);   Rewrite(app.Request.Url.AbsoluteUri, app); // ## ## ## 这里修改了   }

这里将app.Request.Path 替换成了 app.Request.Url.AbsoluteUri

(2)ModuleRewriter.cs类

 protected override void Rewrite(string requestedPath, System.Web.HttpApplication app)    {    // log information to the Trace object.    app.Context.Trace.Write("ModuleRewriter", "Entering ModuleRewriter");    // get the configuration rules   RewriterRuleCollection rules = RewriterConfiguration.GetConfig().Rules;   // iterate through each rule...   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) + "$";    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    }    }    // Log information to the Trace object    app.Context.Trace.Write("ModuleRewriter", "Exiting ModuleRewriter");   }

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

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

这两个地方修改完以后,生成项目。将项止目bin/Debug目录下的URLRewriter.dll文件Copy到我们要重写URL的项目中。

第四:配置项目

(1)在web.config文件的configSections节点下添加如下一行代码

这里配置一个重写配置的类

(2)修改httpModules节点,在里面添加一行配置代码

(3)在主节点configuration节点下添加路由规则,代码如下:

                              http://(\w+).abc.com/  ~/Defa.aspx?id=$1                     

代码里一个RewriterRule节点就是一个规则,这时只有一个,即把域名中的主机头部分做为Defa.aspx页面的id参数的值发送给Defa.aspx页面。

注意:这里LookFor节点里的http://(\w+).abc.com/不能少了***的反斜框

OK,一切完工

发布,上传到服务器,测试一下,如图

本次测试需要一个类库:URLRewriter.dll (测试版本 1.0.1495.18710)

到此,关于"ASP.NET下用URLRewriter重写二级域名的步骤"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

域名 节点 二级域名 步骤 代码 服务器 站点 项目 学习 服务 配置 主机 处理 测试 一行 两个 地址 地方 就是 文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 互联网属科技 麻工互联网科技 互联网科技作文 紫鲸互联网科技 百单互联网科技有限公司 广西互联网科技公司 新华互联网科技校企合作 昭通云南众福互联网科技有限公司 互联网科技与管理 银川新华互联网科技学校联系电话 徐州市互联网科技有限公司 互联网科技公司营业执照怎么办理 深圳互联网科技的发展 上海同邻互联网科技有限公司规模 北京军民互联网科技公司 互联网科技和医药行业 绵阳真晨互联网科技有限公司 长沙易易互联网科技有限公司 互联网的黑科技实验室 江苏根荣互联网科技 互联网科技与金融科技 广州互联网络科技有限公司 科技互联网公司logo 互联网科技博客 花神(南京)互联网科技有限公司 广西互联网科技孵化中心 国大互联网教育科技有限公司工作 济南小医互联网科技有限公司招聘 互联网科技和医药行业
0