现如今都提倡面向搜索引擎开发Web应用,提供内容型的网站都希望能被搜索引擎顺利的索引到。且不提百度的竞价排名,针对搜索引擎做一些必要的配合是应该的。搜索引擎的原理其实就是对网站内容的字符串处理,当你搜索某一关键字的时候,它会遍历所有可访问的链接和子链接,在HttpResponse的Content里去索引关键字,查找到以后就会增加计数。
现在许多Web应用都是用Jsp或者Asp、php进行开发的,当然也有部分公司的官网直接就是一整个flash。在Asp和Jsp中内嵌有很多自定义的标签,能动态从后台读取内容信息发布出来。但是这样无法被搜索引擎查找到。因为搜索程序只能见到页面源码里的变量名字(类似$username,$blog_cotent等),只有当展现出来的页面并非动态的,存在对应的静态页面才能顺利的被搜索引擎找到。
那么针对这种情况如何改良Web应用呢?比较常见的方法是Rewrite(重定向),Rewrite并非真正的静态,而是一种伪静态,简单来说就是把/blog/user.jsp?uid=1重定向到/blog/user/1.html,这样可以欺骗搜索引擎去搜索1.html的源代码,从而收录该页面。
搜索1.html源码时如果碰到进一步的链接,将递归的去搜索下去,这样可能访问的是account.do?uid=1之类的,也可以被Rewrite重定向到account/1.html这样的页面,同样能被搜索引擎收录。
伪静态是不占用额外空间的,只是一个URL的动态映射而已,许多Http服务器都带有这种映射配置功能,例如Apache的Http Server,需要修改释放http.conf里的LoadModule rewrite_module modules/mod_rewrite.so, 然后在使用的VirtualHost中加入RewriteEngin on,Rewrite Rule +正则表达式匹配URL映射之类的。具体参考这里:http://www.360doc.com/content/060628/21/73_144954.html (类似的帖子网上还很多)
真正的静态就是要把每次动态生成的内容重新写入到一个Html文件中并且按照URL请求返回此文件的内容,这样将会占用大量的Http服务器空间,当然现在也有各种缓存和智能节约空间的做法,无非就是确定不用的暂时清空,真正需要又马上生成等权衡规则而已。所以,真正的静态并不是被大量使用的选择。