rel="canonical",这个你们都加了吗?
rel="canonical",这个你们都加了吗? 有用吗? 在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]