ASP.net的RUL重写
有关于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&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重写相关推荐
- [ASP.net]ASP.net的RUL重写
ASP.net的RUL重写<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...
- asp.net用url重写URLReWriter实现任意二级域名 (转)
asp.net用url重写URLReWriter实现任意二级域名 Asp.net 用url重写(URLReWriter)实现任意二级域名 好久没有写技术文章,如果大家看不明白,就多看几篇,汗,或者,在 ...
- ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL
ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流 ...
- asp.net用url重写URLReWriter实现任意二级域名(续)
asp.net用url重写URLReWriter实现任意二级域名(续) 更高级的内容看这里: http://www.cnblogs.com/notus/archive/2007/03/13/67322 ...
- ASP.NET的地址重写“.NET研究”(URLRewriter)实现原理及代码示例
一.概述 访问者输入:http://wu-jian.cnbolgs.com/default.aspx,实际请求和响应的地址却是:http://www.cnblogs.com/wu-jian/defau ...
- ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL(转)
http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC ...
- ASP.net的地址重写(URLRewriter)实现原理及代码示例
转载:http://www.cnblogs.com/wu-jian/archive/2011/01/06/1927089.html 一.概述 访问者输入:http://wu-jian.cnbolgs. ...
- [转载]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL
引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由.也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值,我们无法将 ...
- 使用ISAPI_Rewrite对asp.net实现URL重写伪静态
ISAPI_Rewrite利用IIS的ISAPI实现URL重写的,ISAPI_Rewrite是一个工具,下载地址为:http://www.isapirewrite.com/download/isapi ...
最新文章
- python实现终端3维数据可视化
- func_num_args()
- php array product,PHP array_product()用法及代码示例
- 在 2D 横向卷轴游戏里上下楼梯
- redis存储数据类型_Redis与Memcahe的区别最全整理
- Android如何给无法更改继承关系的Activity更换ActionBar(setContentView方法实战)
- html复选框不可修改,如何用【伪类】成功修改HTML checkbox默认样式?(新checkbox覆盖老checkbox无法点击的问题)...
- vac服务器未响应,win7玩csgo官方匹配提示vac无法验证您的游戏会话怎么办
- 计算机文化理论基础考试单机版,计算机文化基础授课计划表
- educoder平台哪里有答案_GRE机经哪里找?如何获取准确的GRE机经资料
- 炫酷而不复杂,RDP报表就是这么实用方便
- 负载电流对电感值和电感尺寸的影响 // 《精通开关电源设计》P50:负载电流对电感值和电感尺寸的影响
- 生信自学笔记(三)分子数据库
- 【dubbo源码解析】--- dubbo的服务暴露+服务消费(RPC调用)底层原理深入探析
- yolov5火焰检测
- 【软考系统架构设计师】2021年下系统架构师案例分析历年真题
- pytesseract 测试获取查策网编码字体
- Word和Excel中的常用办公操作
- android降噪算法,Android主动降噪功能
- linux 触控板 不识别,linux – 未检测到触控板
热门文章
- HP5200打印机从控制面板手动配置TCP/IP 参数
- 使用NBAR更有效的识别与封堵网络应用
- css学习_css3过渡
- localStorage使用总结,页面跳转,保存值
- 解决“HTTP/1.1 405 Method not allowed”问题
- call to member function bind_param() on boolean...........
- 同源策略——浏览器安全卫士
- apache_fileupload实现文件上传_上传多个文件
- 让我的网站变成响应式的3个简单步骤
- windows做ntp server,linux做ntp client端的配置方法