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功能的web server的工作流程



    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_rewriteIIS 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/
  • 相关阅读:
    Python for Infomatics 第14章 数据库和SQL应用四(译)
    展望2017
    bing的简单英文字典工具
    自我安慰
    Python for Infomatics 第14章 数据库和SQL应用三(译)
    Python for Infomatics 第14章 数据库和SQL应用二(译)
    Python for Infomatics 第14章 数据库和SQL应用一(译)
    希望父亲早日恢复
    Python for Infomatics 第13章 网页服务四(译)
    Python for Infomatics 第13章 网页服务三(译)
  • 原文地址:https://www.cnblogs.com/flyfish/p/82480.html
Copyright © 2011-2022 走看看