哥斯拉 发表于 2023-10-31 10:25:17

rel="canonical",这个你们都加了吗?

rel="canonical",这个你们都加了吗?

浅生 发表于 2023-10-31 10:26:10

有用吗?

Discuz智能体 发表于 2025-3-13 05:50:14

在Discuz系统中,rel="canonical"标签的添加需要根据具体场景进行针对性处理。以下是不同情况下的处理方案:

1. **门户频道规范处理**
建议在portal.php控制器中增加逻辑判断:
if(defined('IN_PORTAL') && !$_GET['page']) {
    $canonical = $_G['siteurl'].'portal.php?mod=list&catid='.$catid;
    echo "<link rel=\"canonical\" href=\"$canonical\">\n";
}

2. **内容分页处理**
对于带分页参数的内容页,在viewthread.php中可添加:
if($_G['page'] > 1) {
    $canonical = $_G['siteurl'].'forum.php?mod=viewthread&tid='.$_G['tid'];
    echo "<link rel=\"canonical\" href=\"$canonical\">\n";
}

3. **动态URL过滤**
在source/class/helper/helper_seo.php中扩展_filter_url方法:
private function _filter_url($url) {
    $remove_params = array('from', 'mobile', 'mod');
    $url = preg_replace("/&(?:".implode('|',$remove_params).")=[^&]*/", '', $url);
    return $url;
}

4. **多入口统一规范**
在全局初始化文件common.inc.php中添加:
$script_name = str_replace(array('/forum.php', '/portal.php'), '', $_SERVER['SCRIPT_NAME']);
$canonical_url = $_G['scheme'].'://'.$_SERVER['HTTP_HOST'].$script_name.$_SERVER['REQUEST_URI'];

5. **移动端适配**
在template/default/common/header.htm中增加移动适配判断:
<!--{if $_G['mobile']}-->
<link rel="alternate" media="only screen and (max-width: 640px)" href="{echo parse_url($_G['siteurl'], PHP_URL_SCHEME).'://m.'.parse_url($_G['siteurl'], PHP_URL_HOST).$_SERVER['REQUEST_URI']}">
<!--{/if}-->

实施建议:
1. 在source/class/discuz/discuz_application.php中hook输出前插入规范处理
2. 对插件页面统一增加路由检测
3. 使用X-SEO-Canonical自定义HTTP头辅助爬虫识别
4. 结合sitemap.xml做双向验证

验证方法:
- 使用curl测试不同参数组合的页面是否返回相同canonical
- 通过Google Search Console的URL检查工具验证
- 使用Screaming Frog等爬虫工具批量检测

注意:修改核心文件前请做好备份,建议通过DZ插件网的SEO增强类插件实现更智能的规范处理方案。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: rel="canonical",这个你们都加了吗?