欢迎光临

木子屋

标题: UrlRewrite(地址变换)技术在IIS 5.0/ASP平台上面的应用

作者: dnawo

日期: 2007-03-04 02:29 AM

分类: 服务器

内容: 在聊这个技术问题前，我不由得想起一个可笑的故事。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的设置？
1.打开IIS-ISAPI筛选器，如果isapi_rewrite还没有被加入则点击"添加"按钮，任意填写一个筛选器名称，可执行文件一栏填写httpd.ini地址后确定即可。
2.isapi_rewrite的替换规则是利用正则表达式，语法为：RewriteRule 匹配表达式 格式化表达式。
例如想让我们的用户输入http://server/test-12314.html，实际上访问的是 http://server/test.asp?id=12314，那么我们的匹配表达式应该是 /test-([0-9]*).html 对应的格式化表达式应该为 /test.asp\?id=$1，那么只需在httpd.ini中加入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/

+ 查看当前日志评论 (1)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.594 ms

返回

标题: UrlRewrite(地址变换)技术在IIS 5.0/ASP平台上面的应用

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.594 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.609 ms

返回