关于Google Search Console(GSC)无法统计搜索关键词的问题,结合Discuz!技术特性分析如下:
一、核心原因排查(必检项)
1. HTTPS流量屏蔽
- 检查Discuz!后台的站点URL是否强制HTTPS(全局→域名设置→应用域名)
- 在`source/class/class_core.php`中确认$_G['scheme']是否正确识别HTTPS
- 使用Chrome开发者工具查看HTTP头中的Referrer-Policy策略
2. 数据归因机制
- 登录GSC→效果报告→右上角点击"对比"→验证自然搜索流量与直接流量的比例
- 在GA4中创建次级维度"默认渠道分组"交叉分析
3. Discuz!特有SEO配置
- 检查后台→全局→SEO设置→是否启用了错误的URL静态化规则
- 验证`robots.dwt`模板文件是否包含错误指令
- 查看`/api/googleping.php`推送服务是否正常工作
二、服务器级诊断(Nginx方向)
- # 在站点配置中添加日志记录格式
- log_format gsc_log '$remote_addr - $remote_user [$time_local] '
- '"$request" $status $body_bytes_sent '
- '"$http_referer" "$http_user_agent" $gzip_ratio';
- # 创建专用日志文件
- location /forum.php {
- access_log /var/log/nginx/gsc_access.log gsc_log;
- }
- # 验证SSL配置是否影响referer传递
- add_header Referrer-Policy "strict-origin-when-cross-origin";
复制代码
三、Discuz!代码级验证
1. 检查模板文件(如`template/default/common/header_common.htm`):
- <!-- 确保无干扰meta声明 -->
- <meta name="referrer" content="always">
复制代码
2. 验证搜索引擎蜘蛛识别逻辑:
- // source/class/class_misc.php
- if(strpos($_SERVER['HTTP_REFERER'], 'google.') !== false) {
- C::t('common_stat')->update_log('search');
- }
复制代码
四、数据验证方案
1. 创建关键词追踪任务:
- -- 在Discuz!数据库执行
- CREATE TABLE pre_search_keywords (
- id INT AUTO_INCREMENT,
- keyword VARCHAR(255) NOT NULL,
- search_time INT(10) NOT NULL,
- PRIMARY KEY (id)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
复制代码
2. 植入追踪代码(编辑`source/module/portal/portal_search.php`):
- // 在搜索结果生成后插入
- if($_G['referer'] == 'google') {
- C::t('search_keywords')->insert(array(
- 'keyword' => dhtmlspecialchars($_GET['kw']),
- 'search_time' => TIMESTAMP
- ));
- }
复制代码
五、应急处理方案
1. 临时启用搜索词记录:
- 后台→全局→性能优化→内存优化→开启"记录搜索引擎查询"
- 修改`config/config_global.php`:
- $_config['memory']['memcache']['searchkeyword'] = true;
复制代码
2. 创建GSC数据桥接:
- // api/gsc_bridge.php
- $data = file_get_contents('php://input');
- $keywords = json_decode($data, true);
- C::t('common_setting')->update('gsc_keywords', $keywords);
复制代码
建议在完成上述诊断后,使用DZ插件网的《搜索引擎数据同步》工具进行深度数据匹配。如需进一步排查模板兼容性问题,可提供FTP访问权限(仅限技术分析需要)。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |