赞片CMScanonical
照着这篇做,你能给赞片CMS整站加上正确的 canonical 标签,让百度、Google 不再把带参数的重复页面当成不同内容收录。
第一步:确认 canonical 要写在哪个文件
canonical 是一段放在页面 <head> 里的 link 标签,作用是指定"这一堆长得差不多的网址里,哪个才是正式版本"。赞片CMS 是模板驱动的前台,所有页面的 <head> 都来自同一个公共头部模板,所以只需要改一处。
登录后台(默认入口 /admin.php),进「模板 → 模板管理」,看当前启用的模板目录名,一般是 default。对应服务器上的物理路径是:
/www/wwwroot/你的站点/template/default/
里面通常有 head.html(或 header.html)、index.html、list.html、detail.html、play.html。要改的就是 head.html。
注意:改之前先把 head.html 复制一份改名成 head_bak.html,改错了能立刻换回来。
第二步:用 {php} 块生成通用 canonical
不用给每个页面单独写死地址,直接在 head.html 的 <title> 下面插入这段:
{php}
$host = 'https://www.example.com';
$uri = strtok($_SERVER['REQUEST_URI'], '?');
$uri = preg_replace('#/page/\d+#', '/', $uri);
echo '<link rel="canonical" href="' . $host . $uri . '">';
{/php}
三行逻辑分别是:固定站点主域名、砍掉 ?from= ?utm_source= 这类参数、把 /page/3 这种分页后缀还原成栏目首页。
把上面的 https://www.example.com 换成你自己站点的真实域名,必须带 https 前缀,结尾不带斜杠。
注意:如果你的赞片CMS版本在模板里不解析
{php}标签,就去「系统 → 系统设置 → 模板设置」里把"允许模板使用 PHP 代码"打开,保存后清一次缓存。
第三步:分页页面单独处理
上一步的写法会把列表页第 2、3 页的 canonical 全部指向栏目首页,这对搜索引擎不友好——现在百度官方建议分页各自指向自己。
如果你的列表页 URL 是 /list/2.html 这种格式,把第二步的 preg_replace 那一行删掉即可,其余不动。
第四步:移动端页面的 canonical 指向
如果你开了 m. 开头的手机站,在手机模板的 head.html 里,canonical 要写成 PC 版地址:
{php}
$uri = strtok($_SERVER['REQUEST_URI'], '?');
echo '<link rel="canonical" href="https://www.example.com' . $uri . '">';
{/php}
同时别忘了在 PC 模板里加一句 <link rel="alternate" media="only screen and (max-width: 640px)" href="https://m.example.com{$uri}">,两边配对才算完整。
第五步:改完必须验证
打开一个详情页,按 Ctrl+U 查看源代码,搜索 canonical,确认三件事:一是地址是 https 绝对路径;二是没有多出 ? 后面的参数;三是详情页 / 列表页 / 播放页各抽查一个,地址不能全指向首页。
也可以用命令行批量验证:
curl -s https://www.example.com/show/123.html | grep canonical
输出里如果出现 <link rel="canonical" href="https://www.example.com/show/123.html">,就说明写对了。
注意:改完模板记得在后台「系统 → 缓存管理」点一次"清除全部缓存",赞片CMS 会缓存编译后的模板文件,不清缓存前台看不到变化。
小结
- canonical 只改公共头部模板
template/默认模板/head.html一处,全站生效。 - 用
strtok($_SERVER['REQUEST_URI'], '?')干掉参数,是解决重复收录最直接的办法。 - 分页页要自引用,不要全部指回栏目首页。
- 手机站 canonical 指向 PC 版,PC 版加 alternate 指向手机站,两边配对。
- 域名必须写 https 绝对地址,改完清缓存再验证。
原文链接:https://www.gj0.com/thread-1083.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。