asp.net url重写

asp.net url重写css

今天研究了一天这个问题
想实现诸如:http://www.ziuziu.cn/2008/2/2
http://www.ziuziu.cn/default.html
等这种url
固然,程序直接生成静态页面能够实现的
可是那样要生成不少这种页面以及文件夹
并且在数据量大的状况下生成是很浪费时间的
在这种状况下就要实现url重写了,固然就不少种方法
下面介绍的是微软的URLRewriter方法html

1.首先下载URLRewriter.dll,下载以后直接复制到你的网站的bin目录中
下载地址 http://ziuziu.cn/download/URLRewriter.rar
2.配置你的web.config文件
在<configuration>节点下加
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>web

<RewriterConfig>
<Rules>
<!--一下三个是我本身写的测试的,固然你能够写不少个 -->
<!--这个是把http://localhost:2001/default.aspx?id=1 生成http://localhost:2001/d1.aspx 这种页面 -->
<RewriterRule>
<LookFor>~/d(\d{0,5})\.aspx</LookFor>
<SendTo>~/default.aspx?ID=$1</SendTo>
</RewriterRule>
<!--这个是把http://localhost:2001/article.aspx?id=1 生成http://localhost:2001/1/a.html 这种页面 -->
<RewriterRule>
<LookFor>~/(\d{0,5})/a\.html</LookFor>
<SendTo>~/article.aspx?id=$1</SendTo>
</RewriterRule>
<!--这个是把http://localhost:2001/test.aspx?id=1 生成http://localhost:2001/1/ 这种页面 -->
<RewriterRule>
<LookFor>~/(\d{0,5})/</LookFor>
<SendTo>~/test.aspx?id=$1</SendTo>
</RewriterRule>api

</Rules>asp.net

</RewriterConfig>测试

同时还要在<system.web>配置节下加
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />网站

</httpHandlers>url

3.好了,基本上就能够了,可是还有重要一点千万不要忘了
以上有三种状况的url生成
针对第一种状况,第一第二步配置完就能够实现了
可对第二种和第三种url状况,还须要进行一下配置
先说第二种状况:由于我们重写的是.html后缀
因此须要在iis中进行.html映射,方法以下:
右击站点-属性-主目录-配置
在打开页面找扩展名.aspx,双击以后弹出窗口内复制可执行文件
通常是C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
复制完以后点添加在弹出窗口把内容复制到可执行文件
扩展名.html固然这个你能够任意写了,不过要和
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
保持一致.
同时去掉确认文件是否存在,肯定便可
完成以后输入http://localhost:2001/1/a.html
是否是就能够访问了?爽吧.net

下面介绍第三种状况,生成目录
这里面稍微有点复杂,一样配置iis
仍是在那个弹出窗口,点插入
把复制的文件即C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
复制到可执行文件框内,同时去掉确认文件是否存在,肯定便可
这样输入http://localhost:2001/1/,是否是就能够访问了?嘿嘿
可能读者会有疑问了:如今设置的这个和第二种设置的有什么区别?
如今设置的实际上是进行*映射,即把全部的文件都进行url重写处理程序处理
这时其实就能够把.html 以及自带的.aspx等映射去掉,一样能够生成.html/.aspx/ url
好了,若是还想其余的扩展你们就尽情扩展吧。htm

4.如今再讲一下*映射要注意的问题
由于*映射是把全部的文件都要交给url称谢程序去处理,这样就会形成会把站点下的图片以及css
或者一些下载的rar等文件都要去处理,这样会慢吗?答案是毫无疑问的,确定会增长内存的,
单单一网站的图片以及上传的图片就足以让程序减慢成倍的速度了。
那有什么办法进行处理吗?
固然,咱们能够进行如下处理就能够把速度还原了:
方法1,把存放图片所在的文件夹转化成一个虚拟目录,在而后移处该虚拟目录*.*的映射,这样一来他的url重写程序就不会去处理图片文件,固然存放别的不须要url重写程序的文件也要象图片文件夹作相似的处理。
虚拟目录设置办法:在iis站点右击目录点属性,目录-点建立
而后点配置,在弹出窗口内删除:通配符应用程序映射(执行顺序)下添加的*.*的映射便可。
方法2,把不须要*.*映射的文件夹设置新站点和原来的站点分开,这样在原来的站点访问的时候用
新站点的域名便可。好比把图片设置站点http://images.ziuziu.cn,这样在http://ziuziu.cn站点访问图片的时候就必须使用http://images.ziuziu.cn/名称.gif,这样就避免了全部问件处理。
以上两种方法便可提升很多速度了,固然第一种药方便的多。

5.最后处理回发的状况你们能够在网上搜下便可。

文章出处:http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/2008414/110348.html

相关文章
相关标签/搜索