Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP分页和排序_Php_Sorting_Seo_Pagination - Fatal编程技术网

PHP分页和排序

PHP分页和排序,php,sorting,seo,pagination,Php,Sorting,Seo,Pagination,我目前正在做一个内部CMS,有点停滞不前。我试图让在博客中的文章页面之间分页变得容易,但我无法决定应该如何处理。真正的问题只有在我需要允许用户选择每页显示多少结果或对文章排序的顺序时才会出现 我最初的想法是简单地使用一个查询字符串:blog/?page=3&count=20&sort=date,但我不确定这种方法是否会对SEO产生负面影响 例如,谷歌是否明智地意识到blog/?page=3&count=20与blog/?count=20&page=3相同 然后我考虑使用会话,但这并不能解决上述问

我目前正在做一个内部CMS,有点停滞不前。我试图让在博客中的文章页面之间分页变得容易,但我无法决定应该如何处理。真正的问题只有在我需要允许用户选择每页显示多少结果或对文章排序的顺序时才会出现

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

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

然后我考虑使用会话,但这并不能解决上述问题,而且可能会使问题变得更糟,因为一些用户可能没有启用cookie

最后,我已经在为一些URL使用mod_rewrite,最好使用这样的结构:
blog/1/20/

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


提前感谢

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


简单的GET查询字符串分页方法工作得很好。谷歌也这样做(例如:q=test&start=10&…),关键是要确保所有内容都可以通过普通的锚来访问。

如果你计划让网站获得满意的爬网效果,就不要使用查询字符串

相反,使用mod_rewrite和如下查询:

blog/page:3/count:20/sort:date
这将使它更具可读性,同时避免使用查询字符串

当然,在执行实际的查询之前,您必须解析它,但在PHP中,这是一件相当简单的事情:使用您分离URI的每个部分,然后从那里解析


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

我一直使用通过ajax调用设置的会话变量来实现这一点

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


我不希望谷歌下载同一页面的10个不同版本。

关于会话变量的评论:

然后我考虑使用会话,但这并不能解决上述问题,而且可能会使问题变得更糟,因为一些用户可能没有启用cookie

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


如果您想避免google复制问题,会话变量可能是解决此问题的最简单、最可靠的方法

但是,您如何满足禁用cookie的用户?或者JavaScript被关闭?我知道会话变量存储在服务器上,但是会话ID仍然需要存储在客户端(在cookie或querystring中)