例如我有个社区网站
现在针对用户主页有如下几种路由设计
- www.xxx.com/member/{username} (知乎,V2EX,sf.gg,豆瓣采用)
- www.xxx.com/{username} (Twitter,github采用)
- member.xxx.com/{username} (bilibili采用)
- {username}.member.xxx.com (LOFTER采用)
- www.xxx.com/profile.php?id={username} (Facebook,百度贴吧采用)
同时针对UGC内容有如下几种路由设计
- www.xxx.com/{username}/{article_id} (github采用)
- www.xxx.com/article/{article_id} (bilibili,知乎问答主站,豆瓣采用)
- www.xxx.com/{article_id} (简书采用)
- article.xxx.com/{article_id} (知乎专栏采用)
- www.xxx.com/article.php?id={article_id} (老旧CMS采用)
哪种更好呢?
这个和SEO关系大吗?
从代码可维护角度上考虑呢?(比如说DNS,跨域cookie,session管理等问题)
各方面综合考虑该使用什么样的路由设计方案?
最合适自己业务的
就拿这个来说,因为这些网站的业务,不仅仅局限于用户,或者说,用户主页不是第一位,亦或者更加明理的分层符合传统业务的目录分层的 url 样式,按照模块这样分下去。
像这种,从 URL 角度来讲,就很明显 这个是以用户为核心的,包括像国内很多直播平台也是,直接就是主域 + 用户ID/用户名
而这种,大部分情况都是存在于多个站点,其中有专门的 SSO 服务器,用户服务器,比如 QQ 。
要知道 LOFTER 是画师用,也是由网易博客的另一个版本而来,博客作为个人的主页,很多人都是希望自己有一个单独的域名,而不是和别人共享路径。
这种基本就是传统的形式,没有来得及与时俱进,或者因为成本和利益无法达到一定点,所以改与不改都无所谓,可以通过 URL 重写来快速实现,很多网站都是这样,包括著名的 Discuz 论坛,在没有开启 URL 重写前都是这种 URL ,还有 DeDeCMS。
总结
换句话说,就自己业务最看重哪一块,就最宜用那一块来做短路径,具有标志性,如果模块比较多就应该做带有模块的,比如 sf 的 URL ,比如 Bilibili 的 Av 号,国内众多直播平台的房间号。
可以在一定程度上以加深用户记忆。