PHP分页和排序

时间:2009-10-13 21:32:52

标签: php sorting seo pagination

我目前正在研究一个内部CMS,并且有点停滞不前。我试图在博客中的帖子页面之间轻松分页,并且无法决定如何处理它。真正的问题只出现在我需要允许用户选择每页显示多少结果或排序帖子的顺序时。

我最初的想法是简单地使用查询字符串:blog/?page=3&count=20&sort=date但我不确定这种方法是否会对SEO产生负面影响。

例如,Google是否明智地意识到blog/?page=3&count=20blog/?count=20&page=3相同?

然后我考虑过使用会话,但是这并没有解决上面的问题,并且可能会因为某些用户可能没有启用cookie而变得更糟。

最后,我已经在某些网址上使用了mod_rewrite,最好使用这样的结构:blog/1/20/

我真的可以在这里提供一些帮助/建议,似乎没有一种快速的分页结果方式。

提前致谢

4 个答案:

答案 0 :(得分:2)

只要这些查询字符串出现在您网站上的链接上(通过静态的,正常的“寻呼”链接,这些链接是可以播放的),就不会有任何不利影响。但是,如果您的分页是通过会话进行的,则可能会产生影响,因为这通常是通过cookie或长查询字符串传播的会话ID完成的。据我所知,参数的顺序无关紧要,只要它们从服务器产生相同的输出。

简单的GET查询字符串分页方法很有效。 Google也是这样做的(例如:q = test& start = 10& ...),重点是确保所有东西都可以通过普通的锚点来访问。

答案 1 :(得分:0)

如果您计划对网站进行令人满意的抓取,请避免使用查询字符串。

相反,使用mod_rewrite和这样的查询:

blog/page:3/count:20/sort:date

这将使其更具可读性,同时将查询字符串排除在外。

当然,在进行实际查询之前,你必须解析它,但在PHP中这很简单:使用explode()分隔URI的每个部分,然后从那里解析。

考虑不修复参数的顺序,而是允许它们被交换和省略,这将在构建链接时为您提供更大的灵活性。

答案 2 :(得分:0)

我总是使用通过ajax调用设置的会话变量完成此操作。

我为每个列标题设置了onClick事件,并将页面内容包装在div中,因此我可以替换它。

我不希望Google无论如何都要下载同一页面的10个不同版本。

答案 3 :(得分:0)

关于会话变量的评论:

  

然后我考虑过使用会话,但是这并没有解决上面的问题,并且可能会因为某些用户可能没有启用cookie而变得更糟。

会话变量存储在服务器而不是客户端,因此禁用cookie不会影响会话变量。

如果您想避免谷歌重复问题,会话变量可能是解决此问题最简单,最可靠的方法。