短网址冲突.首选项目或项目列表?

Bar*_*lom 1 url seo short-url

我正在构建一个包含教程和其他内容的网站.我正在尝试找到一个好的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
Run Code Online (Sandbox Code Playgroud)

自动解决差异是不可能的,因此必须更改其中一个.我应该做哪一个

tutorials/show/a-very-cool-tutorial
   VS
tutorials/list/java
or list-of-tutorials or something like that?
Run Code Online (Sandbox Code Playgroud)

我倾向于使用tutorials/list /(以及重定向教程/)

Tör*_*bor 5

为什么不在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
Run Code Online (Sandbox Code Playgroud)

通过这种方式,访问者可以看出一个非常酷的教程是一个Java教程,如果你介意SEO,这个版本也是好的.

编辑

根据您的评论,文章可能有多个标签,您的网站包含属于标签集的文章列表.在这种情况下,您可以选择以下概念:

tutorials/
tutorials/a-very-cool-tutorial
tags/java ? tags have a separate prefix
tags/java+soap
Run Code Online (Sandbox Code Playgroud)

或其他:

tutorials/
tutorials/a-very-cool-tutorial.html
tutorials/java/
tutorials/java+soap/ ? the trailing slash indicates that it's a listing
Run Code Online (Sandbox Code Playgroud)

(你可以写出第三个可能更好或没有的东西.)这是你的品味问题.

除了您选择的方案之外,我建议您将文章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
Run Code Online (Sandbox Code Playgroud)

编辑2

关于这个问题的最新更新澄清了除了标签之外,你们都有类似的东西 - 我的意思是教程,工具,资源.它给问题带来了不必要的复杂性.我认为将这些额外的方面作为标签处理也会更好.所以教程只是另一个像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
Run Code Online (Sandbox Code Playgroud)