千家信息网

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

发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章主要介绍"ASP.NET下用URLRewriter重写二级域名的步骤",在日常操作中,相信很多人在ASP.NET下用URLRewriter重写二级域名的步骤问题上存在疑惑,小编查阅了各式资料,
千家信息网最后更新 2025年11月06日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安全错误 数据库的锁怎样保障安全 有哪些无线网络技术呢 日志审计服务器多长时间审计一次 崩坏三下载什么服务器好 阿里云的服务器安全吗 数据库性能优化包括哪些方面 服务器大流量 临时邮箱服务器配置 沈河警方检查广告屏幕网络安全 网络安全等级保护岗位设置 网络安全管培生是什么 2022国家网络安全教育日资料 苹果只删除一个游戏的数据库 数据库约束冲突怎么解决 数据库死锁怎么处理 唐软网络技术信息有限公司 网络安全预案 演练 软件开发代码量考核缺点 郑州市网络安全展览馆 数据库实体关系建模技术 服务器一开机黑屏并且自动重启 学前端要会数据库吗 如何监听数据库表的变化 商品信息数据库创建 怎么查在哪儿登录过数据库 租用国外服务器搭建网页 乌海市零基础app软件开发培训 从零开始学软件开发怎么学 联通服务器安信证券 处理数据库的相关软件 数据库实体关系建模技术
0