5

哪个更好(对于用户,对于长寿,对于性能,无论什么):

http://{site}/{login} 例如http://wildobs.com/adam_jack

或者

http://{site}/user/{login}

前者的优点:

  • 用户感觉更特别。
  • URL 更短。

前者的缺点:

  • 不能让用户登录匹配关键字,并且关键字可能会随着时间的推移而增长。

显然,这对于正确(或错误并坚持)很重要,因为所有用户定义的 URL 都基于它。改变它似乎是网站自杀。

缺点(尤其是随着时间的推移)是否超过优点?

4

5 回答 5

7

我会说利大于弊,所以选择 /user/login 而不是 /login。考虑一下 stackoverflow,因为它也是 MVC:我认为知道 /user/blah 中的所有内容将始终引用用户会更容易编程,而如果您不这样做,则必须考虑所有可能性。

例如,在 site/foo 中,foo 可以是用户名、管理页面或其他关键字。如果您正确地将所有内容全部分割出来,那么处理起来会容易得多,这样您就知道如果您看到 site/user/foo 它始终是一个名为 foo 的用户。

于 2008-10-17T19:43:12.647 回答
6

您可以考虑第三种选择:

使用单个字符而不是目录来分隔用户,就像在 unix 中那样。

http://site/~用户名

如果这样更方便的话,这甚至可以导致对 /user/username 的 modrewrite。

然后你的名字很短,很容易处理,而且你的常规页面都不会使用那个特殊字符。

-亚当

于 2008-10-17T19:56:09.610 回答
2

允许用户在网络服务器根目录中创建任意名称存在一个非常重要的问题(如果您使用 /{login} 而不是 /user/{login},他们可以通过选择自己的登录名):一些名称具有特殊的魔法含义,并且这些含义是由第三方定义的。例如:

  • robots.txt,也被称为“机器人排除标准”,所有表现良好的搜索引擎都紧随其后。
  • favicon.ico,它最初是 Internet Explorer 标准,后来被其他几个浏览器采用。
  • 一些网站(至少是谷歌和 IIRC 雅虎)使用您可以在网络服务器根目录中创建一个特殊命名的文件这一事实来证明您是该网站的网站管理员,从而​​允许您访问一些额外的功能(如谷歌网站管理员工具)。

还有其他几个;我听说过允许额外跨域访问的站点地图和文件,但我(或其他任何人)无法知道所有这些。

于 2008-10-17T20:10:59.067 回答
0

我个人会选择 /user/{login}

使用 /{login} 感觉太像弄乱全局命名空间了,而且我们都知道全局变量很糟糕;)

于 2008-10-17T19:43:05.643 回答
0

在 RESTful MVC 中,我最后一次检查来自 Restful Authentication 插件的示例是会话创建模式。因此,您不是登录用户,而是为用户创建会话。在这种情况下,如果身份验证成功,将GET http://{site}/session/new显示登录屏幕并POST http://{site}/session使用正确的参数登录用户。

然后,如果您愿意,可以创建一个新路由,http://{site}/login该路由将重定向到http://{site}/session/new. 同样DELETE http://{site}/session会将您注销。

于 2008-10-17T20:32:38.787 回答