zoukankan
html css js c++ java
UrlRewrite(地址变换)技术在IIS 5.0/ASP平台上面的应用
UrlRewrite(地址变换)技术在IIS 5.0/ASP平台上面的应用
在聊这个技术问题前,我不由得想起一个可笑的故事。
NetCraft曾经做了一个测评
,这个测评根据比较大量网站页面的扩展名是ASP.NET的还是JSP/Servlet的,得到了一个结论,现在ASP.NET的应用超过了JSP/Servlet。
这个测评引发了大量的讨论,很多用JSP的技术人员嘲笑这个测评。因为这个测评的结论忽略了一个很大的问题。那就是,JSP开发的网站的页面,一定是.jsp么?
答案当然是否定的。特别是mvc结构的网站常常都是没有.jsp扩展名的,这是一个惯例了。如果不是为了避免混淆,我们甚至可以让JSP的引擎来解析扩展名为aspx的jsp程序,或者让ASP.NET的引擎来解析扩展名为jsp的ASP.NET程序。唯一需要做的就是在服务器的管理工具上面做一些选择,或者修改配置文件等等。
另外,我们还可以用更强大的技术UrlRewrite,来把动态页面的地址变成象一个静态页面一样,或者把动态页面的参数,变成静态页面地址中的路径名或者文件等等。所以,有时候,请不要太相信你的眼睛,只要服务器管理员想做,那么也许某个.htm地址其实是一个 ASP.NET程序,某个.doc其实是一个JSP程序。眼见并不一定为实。
UrlRewrite是怎么样发生作用的?
简单的说,一个web server的工作就是根据用户请求的地址发送一个文件,或者运行一个cgi/脚本,并把运行结果发送给用户。加入了UrlRewrite功能的web server的工作流程略有变化,首先是看用户请求的地址是否包括在我们的替换规则里面。如果在,先把用户请求的地址进行改变,然后服务器按照新的地址进行文件传送或者cgi/脚本执行。参看下图:
UrlRewrite有什么用处?
1、满足搜索引擎的要求
某些搜索引擎不能支持动态页面的抓取,大量的信息就不能被潜在用户搜索到。用UrlRewrite技术你可以把 http://server/news.asp?id=111 变成 http://server/news/111.htm 这样他们就会被搜索引擎收录了。google虽然可以抓取动态页面,但是google对动态页面的评分一般低于静态页面。所以,对大量信息发布的网站,把网站地址改变成静态的绝对是值得的。
2、隐藏技术实现,提高网站的移植性
每个页面都挂着鲜明的.asp/.jsp这种开发语言的标记,可以一眼让人看出你的网站使用什么语言做的。而且在改变网站的语言的时候,你需要改动大量的链接。而且,一个页面修改了扩展名,他的pagerank也会随之消失,从头开始。我们可以用UrlRewrite技术隐藏我们的实现细节,这样修改移植都很方便,而且完全不损失pagerank。
3、满足美感的要求
对于追求完美主义的网站设计师,即使是网页的地址也要看起来简洁明快。形如 http://server/news.asp?channel=3&id=111 的网页地址,肯定是上不了完美主义者的法眼的,用UrlRewrite技术,你可以把他变成 http://server/news/3/111.htm 。
IIS 5.0支持UrlRewrite么?
答案很简单,不支持。但是我们可以通过安装服务器扩展让IIS支持。
目前有两种产品支持IIS 5.0的UrlRewrite,
isapi_rewrite
和
IIS Rewrite
。
我们采用isapi_rewrite Lite Version(免费版本)。
如何进行UrlRewrite的设置?
isapi_rewrite利用正则表达式进行替换规则的表示。
下面是一个简单的例子,我想让我们的用户输入 http://server/test-12314.html 实际上访问的是 http://server/test.asp?id=12314 。那么我们的匹配表达式应该是 /test-([0-9]*).html 对应的格式化表达式应该为 /test.asp\?id=$1 。
进行正则表达式的编写的时候,可以利用isapi_rewrite提供的正则表达式测试工具(默认安装提供),进行调试。如下图:
做好了匹配表达式和格式化表达式,我们可以按照下面的格式,把它们放到安装目录下的httpd.ini里面。
格式:RewriteRule 匹配表达式 格式化表达式
刚才的例子:RewriteRule /test-([0-9]*).html /test.asp\?id=$1
文件保存后,不需重新启动iis即可生效。
参考资料:
面向Google(Search Engine Friendly)的URL设计
http://www.chedong.com/tech/google_url.html
ISAPI REWRITE文档
http://www.isapirewrite.com/docs/
作者Blog:
http://blog.csdn.net/tinydust/
查看全文
相关阅读:
Emacs for OIer 的一些配置
CF1336E Chiori and Doll Picking 【线性代数,组合计数】
CF605E Intergalaxy Trips 【贪心,动态规划,期望】
Luogu6329 【模板】点分树 | 震波
[SDOI2014]数表
[BZOJ4403]序列统计
[BZOJ5099]Pionek
SP1812 LCS2
SA & SAM
[HAOI2016]找相同字符
原文地址:https://www.cnblogs.com/flyfish/p/82480.html
最新文章
svn设置提交时忽略某些文件
bootstrap中栅格系统的原理
前端雅虎性能优化
闭包的概念和其优缺点
不要让情绪,战胜了你的理智
做一次成功的演讲
程序员做事方法以及思路
ESB结合门户Portlet实现数据分析
浅谈ESB中的DataRow、DataSet、DataBag 、DataBox
论一名项目经理的能力素养
热门文章
AEAI CRM V1.6.0 升级说明,开源客户关系管理系统
AEAI HR薪资汇总功能介绍
AEAI HR开源人力资源管理v1.6.0发版公告
浅谈数通畅联ECP与EAC的区别
CF1034C Region Separation【分析性质,dp】
CF1103E Radix sum【DFT,扩域】
LOJ138 类欧几里得算法【万能欧几里得】
类欧几里得学习笔记
Luogu5334 [JSOI2019] 节日庆典 【ExKMP】
P5333 [JSOI2019] 神经网络 【树形dp,EGF】
Copyright © 2011-2022 走看看