我在一个网站上工作,我们正在进行一次重大的架构重组。有一点可能有点挑剔,但我看不出有什么标准。
当你在 URL 中使用以 / 为分隔符的真实单词时,你应该使用单数还是复数。因此
/user/fred
对比
/users/fred
SO 似乎使用“问题”、“用户”等,但我想知道是否有任何权威建议。
附言:我不知道这应该放在 SO SU 还是 SF 上。如果您能弄清楚它应该放在哪个存储桶中,请随意移动。
答案1
我总是听说只要你内心始终如一,其他都无关紧要。
话虽如此,在 *nix 系统架构中它总是单数。(例如“用户”、“家庭”、“mnt”等(或者应该是“等”?)),所以这可能是一个更好的默认值,因为它已经很常见了?
答案2
我个人更喜欢复数,它表示有一个用户集合,你正在其中寻找 fred。
答案3
为了让@Satanicpuppy 的回答更准确,在 *nix 系统架构中,它并不总是单数。我认为在 *nix 系统中,由于系统管理员大多使用终端访问它,因此优先考虑的是少输入,这就是为什么我们
have proc and not process,
have mnt and not mount,
have var and not variable,
have usr and not user,
...
列表还在继续,他们使用缩写的另一个原因(这里讨论的不是单数或复数形式,而是为什么缩写)。无论操作系统是什么,过去文件系统都有限制。限制既有也有Maximum Pathname Length
。Maximum Filename Length
也许你还记得(如果你够老的话;))一个 verylongnames.txt 文件在 Windows 上变成了 verylo~1.txt,如果没有这是解释)。
但近年来一切都发生了变化:限制已经消失,如今用户体验和可读性是一个重要问题,大多数用户使用 GUI 与计算机交互。这也是为什么在所有主流操作系统(Linux、OS X 和 Windows)上,用户目录命名约定都是相同的:
Users
'-Documents
'-Downloads
'-Movies/Videos
'-Pictures
唯一的例外是 Linux 上的用户目录被称为 home。
除了上述原因之外,在网络上使用复数形式更为常见:
在 Django 中,使用复数形式很常见:例如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 也使用复数形式:
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
答案4
无论如何,设置从错误版本到规范版本的 301 重定向可能是一个好主意。这样,当有人输入链接而不是复制粘贴时,他们会得到 301 而不是 404。
就我个人而言,我会将 /users/ 作为用户列表页面(如果有的话),将 /user/fred/ 作为 fred 的主页。但这样操作起来很麻烦,尤其是如果你想使用 301 重定向,所以在实际系统中,我会选择一个并坚持使用它。