我正在构建一个包含教程和其他内容的网站。我正在尝试找到一个好的 URL 结构。但是,我有一个冲突:
tutorials/ <-- list of all tutorials
tutorials/a-very-cool-tutorial <-- points to the very cool tutorial
tutorials/java <-- a list of tutorials tagged java
tutorials/java+soap <-- a list of tutorials tagged java and soap
tools/soap <-- soap tools
tools/wsdl-generator <-- points to the tool
resources/foo <-- resources for a foo
resources/foo+bar <!-- resource for a foo and a bar
tutorials/java?sort=newest
tutorials/php?showhidden=yes&count=30
无法自动解决差异,因此必须更改其中之一。我应该做哪一个
tutorials/show/a-very-cool-tutorial
VS
tutorials/list/java
or list-of-tutorials or something like that?
我倾向于使用 tutorials/list/(并将 tutorials/也重定向到该目录)
最佳答案
为什么不在 URL 结构中表达文章层次结构?你可以写:
tutorials/ ← list of all tutorials
tutorials/java ← a list of java tutorials
tutorials/java/a-very-cool-tutorial ← points to the very cool tutorial
这样访问者就可以知道一个非常酷的教程是一个 Java 教程,如果你介意 SEO,这个版本也很适合。
编辑
根据您的评论,一篇文章可能有多个标签,并且您的网站有属于一个标签集的文章列表。在这种情况下,您可以选择这个概念:
tutorials/
tutorials/a-very-cool-tutorial
tags/java ← tags have a separate prefix
tags/java+soap
或者其他:
tutorials/
tutorials/a-very-cool-tutorial.html
tutorials/java/
tutorials/java+soap/ ← the trailing slash indicates that it's a listing
(你可以写第三个,可能更好也可能不好。)这取决于你的口味。
除了你选择的方案,我建议你把文章ID或发表日期放在URL中,以避免URL冲突。
tutorials/20090509/a-very-cool-tutorial ← a visitor friendly way
tutorials/928/a-very-cool-tutorial ← ID in URL like how Stack Overflow does
编辑 2
您对该问题的最新更新澄清说,除了标签之外,你们都有类似类别的东西——我的意思是教程、工具、资源。它给问题带来了不必要的复杂性。我认为将这些额外的方面也作为标签处理会更好。所以 tutorial 只是像 java 一样的另一个标签,它适用于上述所有想法。
/a-very-cool-tutorial ← article (beware of URL collision)
/java/ ← all Java posts
/tutorials+java+soap/ ← all Java related SOAP tutorials
/tags/tutorials+soap/ ← you can use an extra prefix
https://stackoverflow.com/questions/843289/