有关于URL的重写,本文也只是拿来主意。相继有MS的组件“URLRewriter”和在Global.asax里的“Application_BeginRequest()”编码方式,以及IIS里的ISAPI设置。

娜列下来,实现方法也都很简单。

方法一:MS组件

这里也不用详解了,相关请看:

http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx

用法很简单,只需要把组件URLRewriter.dll拷到应用程序的bin目录下,然后在web.config下加入如下代码:

在<configuration></configuration>中加入:

<configSections>

<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />

</configSections>

<RewriterConfig>

<Rules>

<RewriterRule>

<LookFor>~/(\d{4})/(\d{2})/Default\.aspx</LookFor>

<SendTo>~/Default.aspx?ID=$1</SendTo>

</RewriterRule>

</Rules>

</RewriterConfig>

然后在<system.web></system.web>中加入:

<httpHandlers>

<add verb="*" path="*.aspx"

type="URLRewriter.RewriterFactoryHandler, URLRewriter" />

</httpHandlers>

最后在地址栏上键入:http://localhost/Test/2004/12/News.aspx

效果出来了。

上面的<LookFor>~/(\d{4})/(\d{2})/News\.aspx</LookFor>这句这正则表达式URL,即被重写的URL,而<SendTo>~/Default.aspx?ID=$1</SendTo>这一句为原始URL地址。其中的$1为第一个正则表达式值(上面例子为:2004),以此类推,第二个即为$2

方法二:Application_BeginRequest()

在应用程序中新建一个XML文件,文件内容为:文件名ReWriter.config

<?xml version="1.0" encoding="utf-8" ?>

<ReWriterUrls>

<rule>

<old>(.*)/News/(\d{4})/Default\.aspx</old>

<new>http://www.cnblogs.com/Default.aspx?id=$2&amp;type=$3</new>

</rule>

</ReWriterUrls>

在Global.asax文件中的Application_BeginRequest(Object sender, EventArgs e)加入代码:

try

{

string path=Server.MapPath("~/ReWriter.config");

XPathDocument myXPathDocument = new XPathDocument(path);

XPathNavigator myXPathNavigator = myXPathDocument.CreateNavigator();

XPathNodeIterator myXPathNodeIterator =  myXPathNavigator.Select ("//rule");

System.Text.RegularExpressions.Regex oReg;

string ReWriteUrl;

while (myXPathNodeIterator.MoveNext())

{

//oReg=new Regex(oNode.SelectSingleNode("url/text()").Value);

XPathNavigator nav2 = myXPathNodeIterator.Current.Clone();

string oldString="",newString="";

XPathNodeIterator it2 = nav2.Select("old");

while(it2.MoveNext())

{

oldString = it2.Current.Value;

break

}

it2 = nav2.Select("new");

while(it2.MoveNext())

{

newString = it2.Current.Value;

break

}

if(oldString != "" &&  newString != "")

{

oReg = new System.Text.RegularExpressions.Regex(oldString);

if(oReg.IsMatch(Request.Url.ToString()))

{

ReWriteUrl = oReg.Replace(Request.Url.ToString(),newString);

HttpContext.Current.RewritePath(ReWriteUrl);

break

}

}

}

}

catch

{

}

最后在地址栏上键入:http://localhost/Test/News/2004/Default.aspx

效果出来了。

ASP.net的RUL重写相关推荐

  1. [ASP.net]ASP.net的RUL重写

    ASP.net的RUL重写<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

  2. asp.net用url重写URLReWriter实现任意二级域名 (转)

    asp.net用url重写URLReWriter实现任意二级域名 Asp.net 用url重写(URLReWriter)实现任意二级域名 好久没有写技术文章,如果大家看不明白,就多看几篇,汗,或者,在 ...

  3. ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL

    ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流 ...

  4. asp.net用url重写URLReWriter实现任意二级域名(续)

    asp.net用url重写URLReWriter实现任意二级域名(续) 更高级的内容看这里: http://www.cnblogs.com/notus/archive/2007/03/13/67322 ...

  5. ASP.NET的地址重写“.NET研究”(URLRewriter)实现原理及代码示例

    一.概述 访问者输入:http://wu-jian.cnbolgs.com/default.aspx,实际请求和响应的地址却是:http://www.cnblogs.com/wu-jian/defau ...

  6. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL(转)

    http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC ...

  7. ASP.net的地址重写(URLRewriter)实现原理及代码示例

    转载:http://www.cnblogs.com/wu-jian/archive/2011/01/06/1927089.html 一.概述 访问者输入:http://wu-jian.cnbolgs. ...

  8. [转载]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由.也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值,我们无法将 ...

  9. 使用ISAPI_Rewrite对asp.net实现URL重写伪静态

    ISAPI_Rewrite利用IIS的ISAPI实现URL重写的,ISAPI_Rewrite是一个工具,下载地址为:http://www.isapirewrite.com/download/isapi ...

最新文章

  1. python实现终端3维数据可视化
  2. func_num_args()
  3. php array product,PHP array_product()用法及代码示例
  4. 在 2D 横向卷轴游戏里上下楼梯
  5. redis存储数据类型_Redis与Memcahe的区别最全整理
  6. Android如何给无法更改继承关系的Activity更换ActionBar(setContentView方法实战)
  7. html复选框不可修改,如何用【伪类】成功修改HTML checkbox默认样式?(新checkbox覆盖老checkbox无法点击的问题)...
  8. vac服务器未响应,win7玩csgo官方匹配提示vac无法验证您的游戏会话怎么办
  9. 计算机文化理论基础考试单机版,计算机文化基础授课计划表
  10. educoder平台哪里有答案_GRE机经哪里找?如何获取准确的GRE机经资料
  11. 炫酷而不复杂,RDP报表就是这么实用方便
  12. 负载电流对电感值和电感尺寸的影响 // 《精通开关电源设计》P50:负载电流对电感值和电感尺寸的影响
  13. 生信自学笔记(三)分子数据库
  14. 【dubbo源码解析】--- dubbo的服务暴露+服务消费(RPC调用)底层原理深入探析
  15. yolov5火焰检测
  16. 【软考系统架构设计师】2021年下系统架构师案例分析历年真题
  17. pytesseract 测试获取查策网编码字体
  18. Word和Excel中的常用办公操作
  19. android降噪算法,Android主动降噪功能
  20. linux 触控板 不识别,linux – 未检测到触控板

热门文章

  1. HP5200打印机从控制面板手动配置TCP/IP 参数
  2. 使用NBAR更有效的识别与封堵网络应用
  3. css学习_css3过渡
  4. localStorage使用总结,页面跳转,保存值
  5. 解决“HTTP/1.1 405 Method not allowed”问题
  6. call to member function bind_param() on boolean...........
  7. 同源策略——浏览器安全卫士
  8. apache_fileupload实现文件上传_上传多个文件
  9. 让我的网站变成响应式的3个简单步骤
  10. windows做ntp server,linux做ntp client端的配置方法