`
peizhiinfo
  • 浏览: 1494827 次
文章分类
社区版块
存档分类
最新评论

不用正则,60行代码搞定高效Url重写

 
阅读更多
在Url重写的很多方案中,都用到了正则,在页面比较少的情况下,可能看不出什么问题

但页面一旦过多,正则的性能凸显,这里给出一个不需要试用正则的方案,当然了,不用正则就需要遵守一些约定

我这里定制了一个规则,一个Url由4部分组成:页面路径信息 + 分隔符 + 参数列表 + Url后缀

给个例子:Home/q/id/1/cata/2/name/icecoffee.aspx

页面路径信息 = Home

分隔符 = /q/

参数列表 = id/1/cata/2/name/icecoffee

Url后缀 = .aspx

我标红的部分,是可配置的,好了,废话不多说,直接上代码

C# code
public class UrlRouteModule : IHttpModule { private static string URL_FLAG = "/q/"; //Url中区别路径和参数的分隔符 private static string URL_SUFFIX = ".aspx"; //对哪种后缀的Url实施Rewrite public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(context_BeginRequest); } private void context_BeginRequest(object sender, EventArgs e) { HttpApplication app = sender as HttpApplication; if (app == null) return; string currentUrl = app.Context.Request.RawUrl; if (currentUrl.EndsWith(URL_SUFFIX, StringComparison.OrdinalIgnoreCase) == false) //后缀不符合的跳过 return; int p = currentUrl.IndexOf(URL_FLAG, StringComparison.OrdinalIgnoreCase); //无参的也跳过 if (p == -1) return; currentUrl = currentUrl.Substring(0, currentUrl.Length - URL_SUFFIX.Length); //去除后缀 string url = string.Format("{0}.aspx", currentUrl.Substring(0, p)); string query = FormmatUrlToQuery(currentUrl.Substring(p + URL_FLAG.Length)); app.Context.RewritePath(url, string.Empty, query); } private string FormmatUrlToQuery(string url) { int j = 0; //计数器 int len = url.Length; char[] chars = new char[len]; for (int i = 0; i < len; i++) { if (url[i] != '/') chars[i] = url[i]; else { if (++j % 2 == 1) chars[i] = '='; else chars[i] = '&'; } } return new string(chars); } public void Dispose() { } }


另写了一个简单的App,附上下载地址:http://download.csdn.net/source/3526519
分享到:
评论

相关推荐

    asp.net c# Url重写和无扩展名Url重写

    在URL重写中,C#代码用于定义重写规则,这些规则告诉系统何时以及如何执行重写。例如,你可以创建一个路由规则,当用户访问`/Product/{category}/{id}`时,路由引擎会自动解析`category`和`id`参数,并调用相应的...

    asp.net 利用正则表达式url重写

    在ASP.NET中实现URL重写通常依赖于`web.config`配置文件,通过使用正则表达式来定义重写规则。下面将详细介绍如何利用正则表达式进行URL重写。 首先,URL重写的基本概念是将用户请求的实际URL转换为服务器内部处理...

    JavaScript 数据校验 正则表达式 示例代码

    示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例...

    Url重写示例(无后缀Url重写)

    Url重写是Web开发中的一个重要概念,主要用于优化和管理网站的网址结构,使其更符合搜索引擎优化(SEO)标准,同时也可提升用户体验。无后缀Url重写是指在URL中不显示传统的文件扩展名,如.aspx、.html等,使网址看...

    正则表达式计数代码行数

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串模式。在编程领域,它被广泛应用于各种任务,包括数据提取...通过熟练掌握正则表达式,开发者能够高效地处理各种文本处理任务,包括代码行计数。

    url重写代码

    标题"Url重写代码"暗示我们将探讨如何编写代码来实现URL重写。在ASP.NET中,这通常涉及到使用`System.Web.Routing`命名空间中的类,如`Route`和`RouteCollection`,以及IIS URL重写模块的配置。 描述中的"在url...

    正则表达式验证url

    正则表达式验证url 验证url不能带 页面 如www.baidu.com/3.html 可以是 ip地址

    紫雨轩IIS URL 重写组件 v1.0

    ZYX_URLRewriter.dll 文件是组件的主要实现部分,它包含着URL重写功能的代码库,可能需要在IIS服务器上进行注册以便使用。RegexTest.exe 是一个正则表达式测试工具,帮助开发者验证和调试自己的正则表达式,确保它们...

    java中的url重写

    在 urlrewrite.xml 文件中,可以使用正则表达式来定义重写规则。 例如,在上面的示例中,定义了两个重写规则。第一个规则将 test.html 的访问请求转发给 page.html;第二个规则将 test.jsp?param=111 这种请求重写...

    Asp.Net URL重写-URLReWrite

    ASP.NET的URL重写(URLRewrite)是一个强大的功能,它允许开发者隐藏实际的Web页面地址,提供更友好的、可读性强的URL,从而提高用户体验和搜索引擎优化(SEO)。在本文中,我们将深入探讨ASP.NET URL重写的核心概念...

    IIS URL 重写模块工具

    2. **高级规则**:可以利用正则表达式实现更复杂的重写,如处理参数、URL编码等。 **四、IIS URL重写模块与其他IIS插件的配合** 1. **ARR (Application Request Routing)**:配合URL重写,可以实现请求的智能路由...

    iis7.5url重写安装包32和64

    3. **正则表达式**:在定义重写规则时,通常会用到正则表达式来匹配和解析URL模式。 **安装过程:** 1. 首先,根据你的操作系统选择合适的安装包,如`rewrite_x64_zh-CN.msi`(64位)或`rewrite_x86_zh-CN.msi`(32...

    数据库url正则表达式校验

    该文档是针对mysql和oracle数据库url地址的校验问题。

    L2正则化python实现案例(附代码)

    本文将深入探讨L2正则化的概念、原理,并通过Python代码实例进行详细解析。 首先,我们理解一下L2正则化。L2正则化,也称为Ridge回归,是在损失函数中添加了模型参数的平方和的系数λ(正则化参数)的项。这会使得...

    URL重写URL重写URL重写URL重写

    URL重写是Web开发中的一种技术,主要用于优化和管理网站的URL结构,使其更符合搜索引擎优化(SEO)标准,提高用户体验,并便于服务器管理和应用程序处理。这个技术主要涉及到服务器配置、HTTP请求处理以及URL路径与...

    asp.net 中的url重写

    在提供的"Source"文件中,可能包含了ASP.NET URL重写规则的具体实现,包括`web.config`配置文件、自定义重写类或者使用第三方库的代码示例。通过分析这些代码,我们可以深入了解如何在实际项目中应用URL重写。 6. ...

    IIS URL重写ISAPI筛选器

    **IIS_URLRewrite.dll**:这是一个动态链接库文件,包含了实现URL重写功能的代码。ISAPI筛选器的工作原理是,当请求到达时,IIS加载这个DLL来处理URL重写逻辑。 **readme.txt**:这个文件通常是提供有关ISAPI筛选器...

    自己写的url重写

    开发者需要对正则表达式有较深入的理解,以及对服务器配置有一定的掌握,才能编写出满足需求的URL重写规则。 总的来说,“自己写的url重写”意味着开发者具备了定制化Web应用程序URL的能力,从而提高了网站的用户...

    TV正则化代码

    在本文中,我们将深入探讨TV正则化的概念、理论基础以及其在实际问题中的应用,尤其是通过"Zeroth-oder-Tikhonov-regularization-master"这个项目中的代码来理解这一技术。 首先,TV正则化源自数学中的变分理论,它...

Global site tag (gtag.js) - Google Analytics