重提URL Rewrite(2):使用已有组件进行URL Rewrite

可能已经没有人会使用上一篇文章中的方法进行URL Rewrite了,因为提供URL Rewrite的组件早已铺天盖地了。

ASP.NET级别的URL Rewrite组件的原理很简单,其实只是监听BeginRequest事件,并且根据配置来决定目标URL。在我之前接触过的项目中,发现使用URLRewriter作为URL Rewrite组件的频率非常高,我想可能是因为那是微软提供的东西吧。

如果要使用URLRewriter,首先自然就是在web.config中配置一个HttpModule:

<httpModules>
 <add name="ModuleRewriter"
    type="URLRewriter.ModuleRewriter, URLRewriter" />
</httpModules>

然后就是进行配置了(注:强烈建议使用configPath属性将配置提取成额外的文件,便于管理):

<configSections>
 <section name="RewriterConfig"
      type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
<RewriterConfig>
 <Rules>
  <RewriterRule>
   <LookFor>~/tag/([\w]+)/</LookFor>
   <SendTo>~/Tags.aspx?Tag=$1</SendTo>
  </RewriterRule>
 </Rules>
</RewriterConfig>

正则表达式是一个非常了不得的东西,能匹配,能捕获。在上面的例子中,我们把符合LookFor条件的“/tag/xxx”重新定位到Tags.aspx页面上,并且将xxx作为Tag这个QueryString项的值,这样就能够在代码中通过HttpContext.Request.QueryString["Tag"]来获得该值了。

URLRewriter的功能对于大多数应用来说已经足够了,但是我总是不喜欢。但如果非要问我不喜欢的原因,我也难说出个子丑寅卯来。可能仅仅是这个配置方式的问题吧。在使用URL Rewriter时,配置段往往会非常长,每个配置项需要从<RewriterRule>到</RewriterRule>共4行代码,一个规模不大的项目都很容易出现上百行的配置。“这也太XML了”,我想,为什么不用XML Attribute呢?这样每个配置项就能缩短为1行了——不过,这是题外话。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索url
, urlrewriter
, 配置
, 组件
, rewrite
, url rewrite
, 一个
url组件
rewrite url重写、urlrewrite 重写、mvc url重写 rewrite、iis urlrewrite 重写、urlrewrite 重定向,以便于您获取更多的相关知识。

时间: 2024-09-19 09:24:09

重提URL Rewrite(2):使用已有组件进行URL Rewrite的相关文章

艾伟:重提URL Rewrite(2):使用已有组件进行URL Rewrite

可能已经没有人会使用上一篇文章中的方法进行URL Rewrite了,因为提供URL Rewrite的组件早已铺天盖地了. ASP.NET级别的URL Rewrite组件的原理很简单,其实只是监听BeginRequest事件,并且根据配置来决定目标URL.在我之前接触过的项目中,发现使用URLRewriter作为URL Rewrite组件的频率非常高,我想可能是因为那是微软提供的东西吧. 如果要使用URLRewriter,首先自然就是在web.config中配置一个HttpModule: <htt

不用组件的url重写(适用于较大型项目)

网上很多关于url重写的教程都推荐下载某某某组件, 我个人不喜欢这样,即使是M$的组件也一样,因为我们干程序员的,越贴近真相越好 那么我也写一个关于url重写的文章,希望对和我一样有个性的coder们有点帮助   先在网站根目录下建立一个config文件夹,再在此文件架下建立一个urls.config文件,这里记录url的配置信息代码如下 Code<?xml version="1.0" encoding="utf-8"?><urls>  &l

jquery ajax中url地址的问题,不明白这个url地址该怎么写。

问题描述 jquery ajax中url地址的问题,不明白这个url地址该怎么写. 搞不清楚url是怎么访问的,不明白这个url地址该怎么写. 谁有现成的例子让我借鉴一下吗. $(function(){ $("#send").click(function(){ $.get("load_Ajax.html",{ name:$("#name").val(), content:$("#content").val() }).funct

C#HttpWebRequest 模拟请求一个URL和在网站上直接输入这个URL返回的页面不一样

问题描述 C#HttpWebRequest 模拟请求一个URL和在网站上直接输入这个URL返回的页面不一样 以上都是同一个URL请求返回的页面.为什么会出现这种情况,实在没有C币了求好心人帮助. myRequest = (HttpWebRequest)WebRequest.Create(requestUrlString); myRequest.Method = ""GET""; myRequest.UserAgent = ""Mozilla/5.

重提URL Rewrite(4):不同级别URL Rewrite的一些细节与特点

在之前的文章里我们已经谈论了有关URL Rewrite的几个主要的方面.在本系列的最后一篇文章中,我们就来讨论一下有关不同级别URL Rewrite的一些细节与特点. 理论上说,IIS级别的URL Rewrite使用C或C++编写,比使用托管代码编写的ASP.NET级别URL Rewrite性能要高.但是我认为这方面的差距在大部分情况下可以忽略不计,这种性能几乎不可能成为性能瓶颈.因此选择何种级别的URL Rewrite一般不会由您应用程序的性能要求来决定.那么到底应该使用哪种级别的URL Re

AngularJS 中的友好 URL —— 移除URL 中的 # 【已翻译100%】

AngularJS 默认将会使用一个 # 号来对URL进行路由. 例如: http://example.com/ http://example.com/#/about http://example.com/#/contact 要获得干净的URL并将井号从URL中移除是很容易的. 完成两件事情就行了. 1.配置 $locationProvider 2.设置我们的相对连接的起点路径 $location 服务 在Angular中, $location服务会解析地址栏中的URL,并对你的应用程序作出改变

从URL中提取参数与将对象转换为URL查询参数的实现代码_javascript技巧

一.从URL中提取参数 有下列字符串: var linkURL = 'http://localhost:8080/String/string_6.html?昵称=小西山子&age=24#id1'; 对于一个真实的URL地址,可以用js来读取location中的相关信息来获得某些信息,下面列举一些: 复制代码 代码如下: location.origin : http://localhost[域] location.pathname : /project_js/Javascript/js_basic

curl-如何获取&amp;amp;lt;meta http-equiv=&amp;amp;#39;Refresh&amp;amp;#39;content=&amp;amp;#39;0;url=&amp;amp;quot;&amp;amp;quot;&amp;amp;gt;的url

问题描述 如何获取<meta http-equiv='Refresh'content='0;url="">的url 我在用curl的时候,抓取某一个页面,页面返回的数据是这样的: 现在我如何获取/view/1592780.htm?fromId=1267830'这个值呢? function set_curl($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLO

艾伟:重提URL Rewrite(3):在URL Rewrite后保持PostBack地址

在进行了URL Rewrite之后,经常会遇到的问题就是页面中PostBack的目标地址并非客户端请求的地址,而是URL Rewrite之后的地址.以上一篇文章中的重写为例: <rewriter>  <rewrite url="^/User/(\d+)$" to="~/User.aspx?id=$1" processing="stop" />  <rewrite url="^/User/(\w+)$&quo