在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
分享到:
相关推荐
在URL重写中,C#代码用于定义重写规则,这些规则告诉系统何时以及如何执行重写。例如,你可以创建一个路由规则,当用户访问`/Product/{category}/{id}`时,路由引擎会自动解析`category`和`id`参数,并调用相应的...
在ASP.NET中实现URL重写通常依赖于`web.config`配置文件,通过使用正则表达式来定义重写规则。下面将详细介绍如何利用正则表达式进行URL重写。 首先,URL重写的基本概念是将用户请求的实际URL转换为服务器内部处理...
示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例...
Url重写是Web开发中的一个重要概念,主要用于优化和管理网站的网址结构,使其更符合搜索引擎优化(SEO)标准,同时也可提升用户体验。无后缀Url重写是指在URL中不显示传统的文件扩展名,如.aspx、.html等,使网址看...
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串模式。在编程领域,它被广泛应用于各种任务,包括数据提取...通过熟练掌握正则表达式,开发者能够高效地处理各种文本处理任务,包括代码行计数。
标题"Url重写代码"暗示我们将探讨如何编写代码来实现URL重写。在ASP.NET中,这通常涉及到使用`System.Web.Routing`命名空间中的类,如`Route`和`RouteCollection`,以及IIS URL重写模块的配置。 描述中的"在url...
正则表达式验证url 验证url不能带 页面 如www.baidu.com/3.html 可以是 ip地址
ZYX_URLRewriter.dll 文件是组件的主要实现部分,它包含着URL重写功能的代码库,可能需要在IIS服务器上进行注册以便使用。RegexTest.exe 是一个正则表达式测试工具,帮助开发者验证和调试自己的正则表达式,确保它们...
在 urlrewrite.xml 文件中,可以使用正则表达式来定义重写规则。 例如,在上面的示例中,定义了两个重写规则。第一个规则将 test.html 的访问请求转发给 page.html;第二个规则将 test.jsp?param=111 这种请求重写...
ASP.NET的URL重写(URLRewrite)是一个强大的功能,它允许开发者隐藏实际的Web页面地址,提供更友好的、可读性强的URL,从而提高用户体验和搜索引擎优化(SEO)。在本文中,我们将深入探讨ASP.NET URL重写的核心概念...
2. **高级规则**:可以利用正则表达式实现更复杂的重写,如处理参数、URL编码等。 **四、IIS URL重写模块与其他IIS插件的配合** 1. **ARR (Application Request Routing)**:配合URL重写,可以实现请求的智能路由...
3. **正则表达式**:在定义重写规则时,通常会用到正则表达式来匹配和解析URL模式。 **安装过程:** 1. 首先,根据你的操作系统选择合适的安装包,如`rewrite_x64_zh-CN.msi`(64位)或`rewrite_x86_zh-CN.msi`(32...
该文档是针对mysql和oracle数据库url地址的校验问题。
本文将深入探讨L2正则化的概念、原理,并通过Python代码实例进行详细解析。 首先,我们理解一下L2正则化。L2正则化,也称为Ridge回归,是在损失函数中添加了模型参数的平方和的系数λ(正则化参数)的项。这会使得...
URL重写是Web开发中的一种技术,主要用于优化和管理网站的URL结构,使其更符合搜索引擎优化(SEO)标准,提高用户体验,并便于服务器管理和应用程序处理。这个技术主要涉及到服务器配置、HTTP请求处理以及URL路径与...
在提供的"Source"文件中,可能包含了ASP.NET URL重写规则的具体实现,包括`web.config`配置文件、自定义重写类或者使用第三方库的代码示例。通过分析这些代码,我们可以深入了解如何在实际项目中应用URL重写。 6. ...
**IIS_URLRewrite.dll**:这是一个动态链接库文件,包含了实现URL重写功能的代码。ISAPI筛选器的工作原理是,当请求到达时,IIS加载这个DLL来处理URL重写逻辑。 **readme.txt**:这个文件通常是提供有关ISAPI筛选器...
开发者需要对正则表达式有较深入的理解,以及对服务器配置有一定的掌握,才能编写出满足需求的URL重写规则。 总的来说,“自己写的url重写”意味着开发者具备了定制化Web应用程序URL的能力,从而提高了网站的用户...
在本文中,我们将深入探讨TV正则化的概念、理论基础以及其在实际问题中的应用,尤其是通过"Zeroth-oder-Tikhonov-regularization-master"这个项目中的代码来理解这一技术。 首先,TV正则化源自数学中的变分理论,它...