在虚拟主机上用asp.net轻松实现urlrewrite

本文介绍了一种在ASP.NET中实现URL重写的方法,适用于虚拟主机环境。通过在global.asax.cs文件中添加代码,利用正则表达式匹配并重写URL路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上看到,很多朋友在ASP.net中做urlrewrite,用的是HttpHandle+Server.Transfer的方法。其实这种方法是错误的。第一,HttpHandle是实现不了urlrewrite的;第二Server.Transfer是标准的重定向,根本不是urlrewrite。 /?"

其实,实现urlrewrite不用自己HttpHandle,也不用自己实现HttpModule,用几行代码就可以轻松实现。

我这里介绍的是在虚拟主机上,虚拟主机不同于自己的服务器,你是没有权限去修改iis,也没有权限去安装iis rewrite之类的iis插件。但是我们仍然可以轻松完成需要的功能。

具体做法如下:打开global.asax.cs,定位到protected void Application_BeginRequest(Object sender, EventArgs e)。从方法名我想也能猜到它是做什么的。输入如下代码:

 

protected void Application_BeginRequest(Object sender, EventArgs e)
        {
            
string oldUrl = HttpContext.Current.Request.RawUrl ;

            
string pattern = @"^(.+)default/(d+).ASPx(?.*)*$";
            
string replace = "$1default.ASPx?id=$2";

            
if(Regex.IsMatch(oldUrl, pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled))
            {
                
string newUrl = Regex.Replace(oldUrl, pattern, replace, RegexOptions.Compiled | RegexOptions.IgnoreCase);
                
this.Context.RewritePath(newUrl);
            }
        }

 

有了上边这段代码,我访问一个类似:.../default/123.ASPx 的网址,当然这个网址在我的电脑上不存在,它就会被定向到:.../default.ASPx?id=123。

当然,利用功能强大的正则表达式,你可以任意按照自己的需要来重写url,这一切都是在服务器端默默的进行,在客户端是不会有任何察觉的。由于是在虚拟主机上,我们只能重定向.ASPx文件,如果是自己的服务器,只要把后缀名在iis中注册一下,就可以实现任意后缀名的处理。比如你可以注册一个*.myweb这样的类型,这样别人访问default/456.myweb时,你可以把它重定向到default.ASPx?id=456。总之一句话,只要你能想到,.net就可以帮你实现,并且这一切不需要多少的代码。

### 如何在IIS上部署和发布ASP.NET网站 #### 安装必要的组件和服务 为了能够在Internet信息服务(IIS)服务器上成功运行ASP.NET应用,必须先确保已安装了所需的Windows功能。这包括但不限于IIS本身及其附加角色服务,比如静态内容支持、CGI处理程序等[^1]。 对于特定于ASP.NET的应用来说,还需要额外安装Web管理工具中的“IIS支持”,以及“.NET环境”的相关选项来提供对不同版本框架的支持能力;特别是当涉及到较新的技术栈如ASP.NET Core时,则要特别注意选择对应的Runtime Host (例如AspNetCoreModuleV2)[^4]。 #### 配置应用程序池 创建一个新的应用程序池用于承载即将发布的站点实例,并将其设置为适合所使用的开发平台: - 对于传统的基于Framework构建的应用,默认应选用`.Net Framework v4.x`作为目标执行环境; - 若是针对现代化的跨平台解决方案(.NET Core),则需指定CLR版本为空即表示“无托管代码”。 此操作可以通过图形界面完成,在添加新AppPool向导中找到高级属性页签下的Managed Pipeline Mode与Target Runtime Version字段进行调整[^3]。 #### 设置物理路径映射关系 通过IIS Manager连接至目标机器上的HTTP Server之后,右键单击左侧树状结构里的'Sites'节点并选取新建网站命令。在此过程中最为重要的一步就是指明该虚拟主机指向的实际文件夹位置——也就是之前已经编译打包好的publish output所在之处[^2]。 另外值得注意的一点在于,如果项目内部实现了复杂的路由逻辑(像MVC架构那样),那么通常情况下就不必再依赖于外部的默认文档或是目录浏览特性了,因为所有的请求都会被转发给相应的控制器去处理。 #### 启用URL重定向规则 某些场景下可能还会遇到需要自定义访问模式的需求,这时可以借助官方提供的Url Rewrite Module插件实现灵活多变的效果。下载完成后按照提示完成注册流程即可生效使用。 ```powershell Install-WindowsFeature Web-Source D:\Sources\sxs ``` 上述PowerShell脚本展示了如何批量启用一组预设的服务集,其中也包含了前面提到过的几个重要组成部分。当然也可以根据实际情况单独挑选所需项来进行在线安装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值