过长的url不利于传播,比如输入框的字数限制导致分享的url被截断或分享内容无法提交。复制url文本时,短的url也可能使鼠标少拖动一段距离。
http://ke.qq.com/cgi-bin/courseDetail?course_id=36413 类似这个课程详情页的url,包含大、小字母、下划线和中划线。我们希望统一下划线做单词间分隔。
例如: http://ke.qq.com/tupu/3/course 这个链接表示图谱(学习导图)模块中,3号学习导图囊括的课程列表,这是url的结构。语义化:特性领域的一些词汇,"tupu"(图谱),“course”(课程)。为什么url中有汉语拼音,又有英文单词,那是因为大家觉得这样简洁,比较好懂。若把url中的图谱id“/3/”换成图谱名称"/android/",可能从语义上、搜索结果排名上会更好一些。
提供动态内容服务时,像cgi-bin之类的单词不应该出现在url中。
说明:本次url重构主要是对直出页面做的。
重构前url | 重构后URL | |
---|---|---|
全部课程页 | http://ke.qq.com/cgi-bin/courseList | http://ke.qq.com/course/list |
搜索结果页 | http://ke.qq.com/cgi-bin/courseList?word=android | http://ke.qq.com/course/list/android (2015.11.2发布) |
课程详情页 | http://ke.qq.com/cgi-bin/courseDetail?course_id=36413 | http://ke.qq.com/course/36413 |
老师详情页 | http://ke.qq.com/cgi-bin/teacher?tid=4140927368 | http://ke.qq.com/teacher/4140927368 |
学团贴子列表页 | http://ke.qq.com/cgi-bin/bbs/xbar_info?bid=226209 | http://ke.qq.com/bbs/tuan/226209 |
学团帖子详情页 | http://ke.qq.com/cgi-bin/bbs/posts/post_detail?bid=226209&pid=8097603-1435217065 | http://ke.qq.com/bbs/topic/8097603-1435217065?bid=226209 |
图谱首页 | http://ke.qq.com/cgi-bin/ke_graph?mapid=6 | http://ke.qq.com/tupu/6 |
图谱的课程页 | http://ke.qq.com/cgi-bin/ke_graph/courseList?mapid=6 | http://ke.qq.com/tupu/6/course |
H5所有页面 | http://ke.qq.com/mobilev2/*.html | http://m.ke.qq.com/*.html |
(1)索引擎收录了大量旧url,希望搜索引擎能快速地切换到新url,并且将页面的权重传递过去,所以用了301跳转,如下方图1所示。(2015.11.2发布)
(2)希望url重构对CGI层透明,由接入层nginx完成新-旧地址的转换工作,如下方图2所示。
教育的部分重点页面在PC端与移动端有2个不同版本的实现,如果用户使用手机浏览他人分享的PC课程详情页时,我们希望用户看到的是相应H5的课程详情页,反之亦然。处理这种不同平台url的对应关系叫平台互转。
pc url | 移动端url | |
---|---|---|
首页 | http://ke.qq.com/ | http://m.ke.qq.com/ |
课程详情页 | http://ke.qq.com/course/36413 | http://m.ke.qq.com/courseDetail.html?course_id=36413 |
全部课程页 | http://ke.qq.com/course/list | http://m.ke.qq.com/courseList.html |
老师详情页 | http://ke.qq.com/teacher/4140927368 | http://m.ke.qq.com/teacher.html?tid=4140927368 |
url重构后,出现了一批新地址,我们要将这批新地址及时地提交百度搜索引擎。
//提交百度 $(window).load(function () { $.getScript('http://push.zhanzhang.baidu.com/push.js'); });
目前,用户访问路径上报是通过一份公共的配置管理的。
var KEY_MAP ={ '/cgi-bin/courseDetail': 'H', '/cgi-bin/courseList': 'K', ... };
比如用户访问课程详情页 http://ke.qq.com/cgi-bin/courseDetail?course_id=36413 ,那么在用户访问路径中会新增一个节点"H"与之对应。url变成 http://ke.qq.com/course/36413 之后这个映射key也需要微调。