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

时间:2009-05-09 13:14:26

标签: 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

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

tutorials/show/a-very-cool-tutorial
   VS
tutorials/list/java
or list-of-tutorials or something like that?

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

5 个答案:

答案 0 :(得分: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

这样访问者可以告诉一个非常酷的教程是一个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

答案 1 :(得分:1)

为什么不

tutorials/ <-- all tutorials

tutorials/java <-- all Java tutorials

tutorial/a-very-cool-tutorial <-- the very cool tutorial

通过使用单数/复数来区分单个教程和教程列表。这消除了任何歧义的可能性,这可能会给你一些安全感: - )

答案 2 :(得分:1)

这不是'不可能'。您始终可以使用一种方法来检查路径中的最后一项是组还是项,并相应地采取相应措施 - 将控制权交给相关代码。我之前在购物网站上使用过这种技术。

由于项目数通常大于组数,我建议您检查一下您是否作为一个特殊情况处理一个组,并默认情况下退回项目。

这并不是说在URL中有一个额外的参数是错误的,更好或更糟。但你可以按照最初的说法做到这一点。

答案 3 :(得分:0)

tutorials/by-tag/java
tutorials/search/user-search-string
tutorials/   <-- all
tutorials/a-nice-tutorial

解析网址时,您可以查找这些关键字。如果它是未知的,它是一个变量索引传递给父'资源'来解决(教程集合获取“/ a-nice-tut”,搜索对象传递搜索字符串等)。

答案 4 :(得分:0)

这有什么问题?

tutorials/ <-- list of all tutorials
tutorials/a-very-cool-tutorial <-- points to the very cool tutorial
tutorials/tags/java <-- a list of tutorials tagged java
tutorials/tags/java+soap <-- a list of tutorials tagged java and soap

对我来说似乎更直观,并且避免任何歧义。