Php 使用规范和/或上/下链接的正确方法

Php 使用规范和/或上/下链接的正确方法,php,mysql,html,mysqli,Php,Mysql,Html,Mysqli,我有一个网站,example.com,它从数据库中提取信息,使用分页,因此每页仅显示12个项目 我允许用户根据自己的喜好查看信息(订购方式): example.com/new/1(年份描述) example.com/old/1(年份ASC) example.com/alpha/1(标题ASC) example.com/recent/1(id DESC) 基本上,example.com?sort=new&page=1 问题1: example.com与example.com/recent/1完

我有一个网站,example.com,它从数据库中提取信息,使用分页,因此每页仅显示12个项目

我允许用户根据自己的喜好查看信息(订购方式):

  • example.com/new/1(年份描述)
  • example.com/old/1(年份ASC)
  • example.com/alpha/1(标题ASC)
  • example.com/recent/1(id DESC)
基本上,example.com?sort=new&page=1

问题1:

example.comexample.com/recent/1完全相同,我使用switch语句检查是否选择了任何排序功能,如果没有选择“recent”(id DESC)

如果用户访问example.com,是否应将他们重定向到example.com/recent/1

问题2:

我对如何设置排序(排序?)方法的规范链接感到困惑,我可以放在example.com上,还是必须创建单独的规范链接

<link rel="canonical" href="https://example.com/new/1" />
<link rel="canonical" href="https://example.com/old/1" />

不确定如何处理我的主页,因为它与/recent/1相同

谢谢


编辑:我不打算将一篇文章分成多个部分,但假设通过分页显示多篇文章。

您有三个选项:

  • 基本url分页可以被压缩为“默认”url
  • 将所有内容扫描到以机器人为目标的未分页列表
  • 结合这两个选项,并实现延迟加载分页
Cannonicialize到您的“默认”分页url 无论您决定允许在基本url
example.com/2
上或在特定路径
example.com/recent/3
上分页,都应将所有内容(使用prev/next)插入该url

如果我假设只能通过
/recent/#
访问备用页面,那么您应该简单地将所有排序和分页的URL解析为
/recent/
。然后将上一次/下一次扫描设置为有序url

/最近的/4
  • 你能告诉我最近的事吗
  • 上一次/最近的/3
  • 下一个:/最近的/5
/最近的/1
  • 你能告诉我最近的事吗
  • 下一个:/next/2
/旧的/7
  • 你能告诉我最近的事吗
  • 上一页:/old/6
  • 下一个:/old/8
其主要原因来自上一次/下一次规范化的目的和效果。特别是,它告诉搜索索引将所有页面视为单个大页面。结果是,就谷歌而言,排序URL之间的内容是相同的

比简单的prev/next更聪明,并遵循谷歌的建议 另一种方法是,只需在域根
example.com
上显示对机器人程序的巨大(未激动的)响应,并使用特定于已排序URL的prev/next对每个页面进行扫描

延迟加载 在您选择了上述选项的一些组合之后,现在是时候仔细看看延迟加载结果,以及删除URL中的页码了

这涉及到使用ajax在视图之外加载和卸载页面和项目EX:用户滚动到第7页,而ajax将第8页和第9页的项目加载到页面上,并从页面中删除第3页和第4页的项目

如果你这么做,谷歌不会在意你是否在创建以机器人为目标的内容。事实上,他们建议将其用于一些AdSense seo案例

更多阅读

你看过谷歌的推荐吗?或者其他关于这个主题的文章?的确我测试了为每个订单制作独特的佳能,并设置上一个/下一个链接;然而,我意识到我可能必须为每个订单创建新内容(标题、网站介绍),以避免重复内容。这就是我开始担心为我的索引页设置佳能的地方。这是有道理的。如果我将canonical设置为/recent,那么如果我的域仍然像“example.com”一样加载在地址栏中,或者我应该通过htacces强制它包含“/recent”吗?它会对我的域名的共享方式产生影响吗(没有“/recent”的反向链接)?不需要强制使用特定的url来查看内容,这就是cannonicalization的全部要点。只需在域根“example.com”上设置相同的cannonicialization,如果将域根设置为“默认”,可能会得到更好的结果