URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程。
使用这种技术的原因:有个牛人说过,将动态网页链接rewriting成静态链接是最保险和稳定的面向搜索引擎优化方式,再则,让你的地址栏里面的内容更层次分明,好看;显得我的网站的技术很高明,“高深莫测”;
实现:
可以使用 ISAPI 筛选器在 IIS Web 服务器级别实现 URL 重写,有很多的第三方的ISAPI 筛选器可以实现这种功能,另外,不知道在ASP上面是不是必须这样实现?今天下午我就研究了下使用ISAPI Rewrite 来实现这种功能。
也可以使用 HTTP 模块或 HTTP 处理程序在 ASP.NET 级别实现 URL 重写。还不知道是怎么回事,看不少人写的.text实现的分析,呵呵,不大懂,待努力了。。。
Apache服务器上也有一个非缺省的模块:mod_rewrite。
步骤:
1。到ISAPI Rewrite 下载isapi_rewrite Lite Version(免费版本)。
2。安装下载的MSI程序
3。将ISAPI_Rewrite.dll加入网站的ISAPI筛选器
4。编辑ISAPI_Rewrite安装目录的httpd.ini,添加RewriteRule (转换规则)。例如:
RewriteRule /news/([0-9]+).html /news/newsview.aspx\?id=$1
这样,当你访问/news/21.html 的时候,它就自动显示news/newsview.aspx?id=21的结果
5。OK。
高深的东西多者呢,不过简单的实现好像就这么多。也许有没有说明白,其实我也是参考别人的作的,看下面链接的文章。 另外,提醒自己,学好、精通正则表达式。
update:2006-3-7
使用上述的方式改造了公司的一个网站,但是发现有时候访问路径会出现莫名其妙的问题。再者,同台服务器上面的另外一个站点的个别栏目出现问题,也是路径出现错误。郁闷。在服务器上面删除ISAPI Rewrite 后问题解决。无奈,只好恢复URL重写之前的系统。公司服务器运行的是WIN2000的系统。奇怪啊?我只是在要改造的网站上面添加了ISAPI筛选器,另外一个网站应该不会受到影响啊?再则,如果对一台机器的几个网站配置了这种URLRewrite实现,他们很好的共享一个httpd.ini文件吗?你能难保他们不出错?看来这种实现URLRewrite的方式只适合运行一个网站的系统。一个上午基本上就这样白忙活了。
参考资料:
UrlRewrite
http://yuhua.yfidc.com/post/100.shtml
如何提高在Google中的排名(3)--Search Engine Friendly的URL设计
http://www.chedong.com/tech/google_url.html
ISAPI REWRITE文档
http://www.isapirewrite.com/docs/
下面两篇还没有研读清楚:
在 ASP.NET 中执行 URL 重写
http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx
.NET Framework 开发员指南--注册 HttpHandler
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconhttphandlerregistration.asp 了