标准单数与复数types的名称在url

我在一个网站上工作,我们有一个重要的体系结构。 有一点可能是有点胡言乱语,但我看不到一个标准的这种或那种方式。

当你在一个带有/作为分隔符的URL中使用真正的单词时,应该使用单数或复数的types。 所以

/user/fred

VS

/users/fred

所以似乎使用“问题”,“用户”等,但我想知道是否有任何权威的build议。

PS。 如果这个属于SO SU或SF,我就不能算出来。 请随时移动,如果你可以计算出它应该进入哪个桶。

我一直听说,只要你内在一致,这并不重要。

这就是说,在* nix系统架构中,它总是单一的。 (例如“用户”,“家”,“MENT”等(或应该是“等”?)),所以这可能是一个更好的默认,因为它已经很普遍?

为了使@Satanicpuppy的答案更加精确,在nix系统架构中并不总是如此。 我认为在* nix系统中,由于系统pipe理员大多使用terminal访问它,优先级是键入较less,这就是为什么我们

  have proc and not process, have mnt and not mount, have var and not variable, have usr and not user, ... 

这个名单还在继续,他们使用缩写的另一个原因(这里的讨论不是关于单数或复数forms,而是关于为什么缩写)。 无论操作系统如何,以前的文件系统都有一定的限制。 限制是Maximum Pathname LengthMaximum Filename Length 。 也许你可以记住(如果你足够的年龄了))一个verylongnames.txt文件在窗口上变成verylo〜1.txt,如果不在这里则是explenation )。

但是最近几年一切都变了:限制已经消失,如今用户体验和可读性是一个重要的问题,大多数用户使用graphics用户界面与电脑进行交互。 这是在所有主要操作系统(Linux,OS X和Windows)上用户目录命名约定相同的一个很好的理由:

  Users '-Documents '-Downloads '-Movies/Videos '-Pictures 

唯一的例外是Linux上的Users目录被称为home。


除了上述原因,在networking上使用复数forms更为常见:

在Django中,通常使用复数forms:如django文档中的民意调查应用程序教程:

  # To get a list of polls /polls/ # To get an individual poll item /polls/5/ 

另一个很好的例子是谷歌,它使用:

  google.com/analytics google.com/analytics/settings google.com/analytics/feeds google.com/books google.com/catalogs google.com/maps google.com/places google.com/trends 

也Bing使用复数forms:

  bing.com/images bing.com/maps bing.com/results bing.com/videos 

当然还有stackoverflow:

  stackoverflow.com/users/ stackoverflow.com/feeds/ stackoverflow.com/questions/ stackoverflow.com/tags/ stackoverflow.com/help/badges 

我个人更喜欢复数,它表示有一个用户的集合,其中你正在寻找fred。

我更喜欢singular /user/fred因为它对于外行来说在语法上更加正确:您正在查看用户configuration文件,对于用户fred。 但是,如果/users/显示所有用户,则/users/fred更有意义。

最终@Satanicpuppy是正确的,重要的是你是一致的。

无论哪种方式,build立一个从错误的301redirect到规范版本可能是一个好主意。 这样,当有人键入一个链接而不是复制它,他们得到一个301而不是一个404。

就我个人而言,我将/ users /作为页面上的用户列表(如果有的话)和/ user / fred /作为fred的主页。 但是做这个工作很麻烦,特别是如果你想使用301redirect,那么在一个真正的系统上,我会select一个并坚持下去。

我更喜欢复数。 如果您认为您的网站不是dynamic的,而且您只需使用由apache提供的文件夹和文件创build网站。 那么文件夹将是复数。 例如文件而不是文件