在ASP.NET开发中,IIS(Internet Information Services)是常用的Web服务器,它提供了强大的功能,包括URL重写,有时我们可能希望在不配置IIS的情况下实现类似伪静态路由的功能,以下是如何在不设置IIS的情况下,在ASP.NET中实现URL重写的方法。
使用ASP.NET路由
ASP.NET MVC和ASP.NET Web API都内置了路由功能,可以用来实现URL重写,以下是如何配置和使用ASP.NET路由的步骤:
1 添加路由配置
在ASP.NET MVC项目中,你可以在Global.asax文件中添加路由配置:
public class WebApiApplication : System.Web.HTTPApplication{protected void Application_Start(){GlobalConfiguration.Configure(WebApiConfig.ReGister);RouteTable.Routes.MapHttpRoute(Name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional });}}
2 使用路由
在控制器中,你可以使用路由参数来访问URL中的不同部分:
[Route("api/[controller]")]public class ProductsController : ApiController{public IHttpActionResult Get(int id){// 模拟获取产品信息return Ok("Product ID: " + id);}}
使用URL Rewrite Module
如果你使用的是ASP.NET Web Forms,可以通过安装URL Rewrite Module来实现URL重写,以下是如何配置URL Rewrite Module的步骤:
1 安装URL Rewrite Module
在IIS中,你可以通过添加URL Rewrite Module来启用URL重写功能。
2 配置URL Rewrite规则
在IIS中,创建一个新的URL Rewrite规则,配置重写模式:
使用自定义URL重写
如果你不想使用IIS或内置的ASP.NET路由,可以创建一个自定义的URL重写中间件,以下是一个简单的示例:
public class CustomUrlRewriter : IHttpModule{public void Init(HttpApplication context){context.BeginRequest += new EventHandler(Application_BeginRequest);}private void Application_BeginRequest(object sender, EventArgs e){HttpApplication application = (HttpApplication)sender;HttpRequest request = application.Request;if (request.Path.StartsWithSegments("/products/")){string productId = request.Path.TrimStart('/').Split('/')[1];request.Path = "/Products/" + productId;}}public void Dispose(){}}
在Global.asax中注册中间件:
protected void Application_Start(){// 注册中间件HttpContext.Current.Application.Add("CustomUrlRewriter", new CustomUrlRewriter());}
Q1: 为什么要在ASP.NET中实现URL重写?
A1: URL重写可以提供更友好的URL,提高搜索引擎优化(SEO)效果,并且使应用程序的URL结构更加清晰和易于管理。
Q2: 不使用IIS的URL重写模块,如何测试自定义URL重写中间件?
A2: 你可以通过启动ASP.NET开发服务器(如IIS Express或Visual Studio Development Server),然后在浏览器中访问重写后的URL来测试自定义URL重写中间件,确保在Global.asax中正确注册了中间件。
ASP.NET一定要用IIS做服务器么?
要装IIS的;用做网站开发要涉及到服务器端的设置,最基本的就是需要WEB服务器,我们一般采用IIS作为我们应用程序的WEB服务器,所以做网站开发一定要安装IIS的。
怎么用ISAPI Rewrite实现asp .net 2.0的网站程序伪静态设置????
ASP之URL重写
下载ISAPI_Rewrite解压到任意文件夹安装,给IIS用户读取权限,在IIS右键点击一个站点,属性,ISAPI筛选器,添加,筛选器名称一定得叫 re,可执行文件就点浏览找到你解压的目录加上即可。
重启IIS后应该就能支持URL重写规则了。
需要修改解压目录中的这个文件
RewriteRule /info_(\d+)\ /info\\?id=$1 [N,I]
这句话就可以把提交的地址映射到真正的地址如果你在处理数据翻页,那么写法是:More_<%=Page%>_<%=type%> (注:page是翻页页数,type是数据类型)表现形式:More_1_如果翻下一页,则为:More_2_,继续下一页的循环,则是:More_3_,以此类推。不过你需要在文件中增加以下代码:RewriteRule /More_(\d+)_(\d+)\ /jsp/more\\?page=$1&type=$2 [N,I]如果你的动态程序有多个参数需要传递,那么就增加多个(\d+)即可,如下:RewriteRule /More_(\d+)_(\d+)_(\d+)\ /jsp/more\\?page=$1&type=$2&type2=$3 [N,I]翻页处理表现形式是:More_1_
【方法不是吹牛的】慢慢看人家是怎么做的吧
php的url重写怎么实现?
它不是php实现的,是web服务器实现的,如果是apache的话,一般支持,可以通过定义来开启和配置url rewrite。 如果是iis,国内的windows虚拟主机很少有支持url rewrite的,如果自己在本机测试,iis6可以安装非官方的url rewrite模块(是一个cgi),iis7有url rewrite模块,但是没有自带,必须去iis的官方网站下载。














发表评论