万能的UrlReWrite路径静态化方案

来源:互联网 发布:矢量离线地图数据库 编辑:程序博客网 时间:2024/05/03 13:14
提示:万能的静态化方案需要读者对WEB服务器解析请求的机制熟悉。

静态化地址可以对蜘蛛提供比较好的搜索体验,因此我在开发友邻网时就考虑了如何为蜘蛛提供比较好的搜索体验。查了查最近网上的静态化方案,感觉网上的UrlRewrite方案很多。但都面临一个问题:当要静态化的路径类型很多,并且url中可能的参数组合很多时,将需要对不同的路径格式配置对应的路径转换规则,这将是个繁琐的工作。

为此,我掏空脑筋想了一种“万能”的路径静态化方案。先从大局分析,静态路径有2个步骤:
1)        输出:在输出URL时把动态的地址输出成静态的URL。
2)        解析:在WEB服务器收到请求时,把静态地址解析成真正访问的文件名和参数。

就拿我最近实施的友邻网[url]http://www.131409.com[/url]来举例,以下的URL:
http://www.131409.com/city/listPhoto.aspx?photo_ID=20&type_ID=2
这个URL要静态化的地方就2个,一是目录和文件名,二是参数,将2部分分解如下:
http://www.131409.com/[目录和文件名]?[参数]

要把这个URL优化的目标就是把目录名和参数整合成一个静态文件名。而要把这2个串整理成静态的文件名的关键就在于2点:
1)        静态化地址要包含原地址的目录、文件名、参数信息
2)        静态化后的地址可以“反解析”成实际访问的目录、文件名、参数信息,并且在解析过程中不会产生歧义。

为了实现以上2点,就需要为路径静态化定制一个转换规则:
1)        目录文件名 和 参数之间的间隔 用 波浪号“~”表示
2)        目录和文件名之间的间隔用2个短折线“-”表示
3)        动态文件名,直接替换成html,或者HTM
4)        参数部分,多个参数之间用2个短折线间隔,参数名和对应值之间用一个短折线间隔
5)        转换后的参数部分放在目录文件名部分之前

依据以上规则,示例中的动态路径静态化后成为以下:
http://www.131409.com/ photo_ID-20--type_ID-2~city--listPhoto.html

这样的规则就实现了URL的静态化,并且可以抛开在配置urlRewrite时,必须多各种可能的URL配置不同的匹配规则。而且以上规则所转换的地址都是在根目录下,因此肯定对网页的权重等信息会有帮助。抛砖引玉,大家一定有更好的想法,不妨说来看看。

关键词:urlREwrite  静态化
 
原创粉丝点击