在某些URL上使用尾随斜杠,但在其他URL上不使用——这是一种好的做法吗?我应该重定向吗


Trailing slashes on some URLs, but not others - good practice? Should I redirect?

在我推出之前,我一直在研究标准化我的所有网站URL(原因很明显),并对这个主题进行了大量研究。我得出以下结论:

  1. 只要同一页面没有多个URL,使用强制尾部斜杠还是强制无尾部斜杠都无关紧要。

  2. 如果目录/集合(例如posts/或articles/)有尾部斜杠,而"文件"或特定项目(例如文章或博客文章)没有(例如posts/2012-02-05-Stackoverrow-rules或articles/12正确的URL),那么它看起来更好,对很多人来说更有意义。

现在我显然愿意就这个问题进行辩论/发表其他意见,但现在我倾向于这种URL方法。。。话虽如此,强制执行这一标准的最佳方式是什么?我的系统是基于模块的,我不知道我会有多少模块,我真的不想为我(或其他人)添加的每一个新模块都用新的mod_rewrite规则编辑.htaccess文件——这会变得一团糟。

在PHP中,有没有一些简单、可靠的方法可以在没有htaccess的情况下做到这一点?我甚至需要吗?所有的URL都将由一个类生成,这个类将加强这些标准,这是一个合适的MVC框架,所以为不符合上述标准的页面添加一些代码不会那么困难,但我只是不确定最好的方法是什么

澄清

编辑为了澄清,我正在试图弄清楚如何使一些链接具有尾部斜杠,而一些而非具有尾部斜杠*,如果有人链接到错误的URL(需要尾部斜杠的URL上没有尾部斜杠,反之亦然),它会将用户重定向到正确的URL。

*就是一个例子

  • www.example.com/articles/
  • www.example.com/blog/
  • www.example.com/forums/

对于需要尾部斜线的页面,以及

  • www.example.com/articles/21-Article-Name
  • www.example.com/blog/2012/02/06/blog-Post
  • www.example.com/forums/post/29531/post-Title

对于不应该有尾部斜杠的页面。基本上,"目录"有斜杠,而"文件"没有强调文本

那么,基本上,实现这一目标的最佳方式是什么很明显,所有的内部链接都会达到这个标准,但我无法控制其他网站——无论是否有斜杠,它们的链接都可能会损害我的SEO。与此相关的是,你对这种风格的URL有什么看法?

是否拥有它们主要是为了方便您。你应该保持一致,并确保每个页面只有一个"真实"的URL。至于重定向,我建议不要因为没有或有斜杠就重定向。在这种情况下,重定向只是开销。

使用canonical meta标记向搜索引擎指示什么是"true"URL。我通常创建一个集中函数,可以根据一些规则检查当前URL,并生成"true"canonical URL。如果你的集中式函数变得太大或有太多规则,那么你的URL结构可能太复杂了。

我们最近遇到了同样的问题。我们决定把所有的东西都处理掉,除了那些可能存在的页面?query_data。它简化了我们的检测分配。只需检查尾部是否存在斜杠,除非?我们使用PHP来实现这一点。我确信还有一种.htaccess方法。它将是其中之一,任何最适合你的场景。您可能还想了解一下规范标签,以及正确的301重定向(http://en.wikipedia.org/wiki/HTTP_301)这也会让你的搜索引擎记录更清晰。