首页 › 博客 › 文章

网站流量突然掉了:先排除这 8 个原因

网站流量突然掉了:先排除这 8 个原因

流量掉了先别改代码。用同一口径对比 GA4、Search Console 与服务器日志,确认真跌还是统计错位;再按 robots、证书 5xx、收录处罚、改版 URL 逐层排除。验证标准是:日志 200 回升、GSC 覆盖率恢复、排名回到基线。

排查流程:8 步定位网站流量下降

  1. 统一数据源口径,确认是否真的掉量。
  2. 检查 robots.txt 与 noindex 是否误伤页面。
  3. 验证 TLS 证书与 5xx 错误是否拦截访问。
  4. 查看收录状态与 Search Console 人工处罚。
  5. 核对改版后的 URL 变动与 301 重定向。
  6. 对比服务器访问日志中的真实爬虫命中。
  7. 用 staging 复现并灰度回退变更。
  8. 建立发布前检查清单与监控告警。

1. 先确认是否真的掉(数据源口径)

很多“暴跌”是统计口径变了。2026 年 GA4 默认与 Search Console 数据本就不一致,前者看会话,后者看点击与展示。先在服务器层拿原始日志,再对齐三方数据。

在 Nginx 环境执行下面命令,取近 7 天与上周同期的有效请求量:

awk '$9==200 {print $4}' /var/log/nginx/access.log 
| cut -c 1-11 | sort | uniq -c

再用 GoAccess 或如下命令看 UA 里爬虫占比:

grep -iE 'googlebot|bingbot' /var/log/nginx/access.log 
| wc -l

常见坑:CDN 或缓存插件把真实 IP 写丢,日志里全是边缘节点 IP。先在 wp-config.php 确认没有错误覆盖 REMOTE_ADDR,Nginx 需设 real_ip_header X-Forwarded-For;。若日志正常而 GA 掉,多半是 gtm 容器被广告拦截或 consent mode 拦了,不是真跌。

做对了的标准:Nginx 200 计数、GSC 点击、GA4 会话三者趋势同向。若只 GA 掉,就去查跟踪代码;若三者同掉,继续往下排。

2. robots 与 noindex 误伤

robots.txt 写错一行就能让整站从搜索消失。WordPress 后台“设置→阅读”里的“建议搜索引擎不索引本站点”会直接输出 noindex,上线时常被忘记关掉。

先 curl 看头部与正文:

curl -I https://example.com/
curl https://example.com/robots.txt

再看页面源码里有没有:

<meta name='robots' content='noindex,nofollow' />

2026 年多数 SEO 插件(Yoast、Rank Math)在文章级也能单独关索引。进数据库查 wp_postmeta:

SELECT post_id, meta_value FROM wp_postmeta 
WHERE meta_key = '_yoast_wpseo_meta-robots-noindex';

回退方法:改回 robots.txt 后,在 GSC 用“网址检查→请求编入索引”。若是 wp-config.php 里误加了 define('WP_ENVIRONMENT_TYPE','staging'); 导致插件自动 noindex,改回 production 并清对象缓存。

验证:robots 允许抓取、页面无 noindex、GSC 显示“已编入索引”。

3. 证书与 5xx

证书过期或 5xx 会让爬虫连续拿不到内容,GSC 报“已抓取未编入索引”或直接掉收录。先查证书:

获取报价

邮箱 + 需求 + 预算区间,24 小时内回复报价。

echo | openssl s_client -connect example.com:443 
-servername example.com 2>/dev/null | openssl x509 -noout -dates

再压测后端是否 502/504:

curl -o /dev/null -s -w '%{http_code}n' https://example.com/
tail -f /var/log/nginx/error.log

PHP-FPM 挂掉时 Nginx 日志是 connect() failed (111: Connection refused)。重启后仍不稳就看 www.conf 里 pm.max_children 是否打满。若流量掉伴随全站 5xx,先看是不是刚发版:插件冲突常导致致命错误。

踩坑:只配了 HTTP 跳转 HTTPS 却忘了证书链,某些爬虫视为不安全。回退是先临时 return 200 静态页保收录,再修 TLS。

验证:openssl 显示有效期覆盖当前、curl 返回 200、error.log 无上游拒绝。

4. 收录状态与人工处罚

进 Google Search Console 看“网页”报告与“安全与手动操作”。人工处罚会写明“ unnatural links ”或“ thin content ”。

用 API 批量看 URL 状态(2026 年 URL Inspection API 仍可用):

curl -X POST 
 'https://searchconsole.googleapis.com/v1/urlInspection/index:inspect' 
 -H 'Authorization: Bearer YOUR_TOKEN' 
 -H 'Content-Type: application/json' 
 -d '{"inspectionUrl":"https://example.com/page","siteUrl":"https://example.com/"}'

若收到人工处罚,按邮件要求清理链接或内容后提交重新审核。没有处罚但覆盖率暴跌,多半是前几步的技术问题。

验证:手动操作项为空、覆盖率曲线回升到基线。

5. 改版导致的 URL 变动

换主题、改固定链接结构、迁移域名都会产生新 URL。老地址没做 301,权重就断了。先导出所有 404:

awk '$9==404 {print $7}' /var/log/nginx/access.log 
| sort | uniq -c | sort -nr | head -30

在 WordPress 里用 template_redirect 钩子补重定向,而不是全靠 .htaccess:

add_action('template_redirect', function () {
    if (is_404()) {
        $uri = $_SERVER['REQUEST_URI'] ?? '';
        $map = ['/old-page' => '/new-page'];
        if (isset($map[$uri])) {
            wp_safe_redirect(home_url($map[$uri]), 301);
            exit;
        }
    }
});

改版前先在 staging 跑一遍全站抓取,比对新旧 URL 清单。若已上线且掉量,用 Redirection 插件或上面的代码批量补 301,再在 GSC 提交更新站点地图。

验证:404 日志清零、新 URL 返回 301 且 Location 正确、老排名逐步迁移。

6. 服务器日志里的真实爬虫命中

6. 服务器日志里的真实爬虫命中

第三方工具说“没抓取”未必准。直接看日志里 Googlebot 的到达率与返回码:

grep 'Googlebot' /var/log/nginx/access.log 
| awk '{print $9}' | sort | uniq -c

若大量 403,可能是 WAF 或安全插件把 UA 当恶意。Wordfence 2026 版可在 wordfence-waf.php 里临时放行:

// 在 waf 配置数组里加 UA 白名单
$config['whitelisted'] = 'Googlebot,Bingbot';

回退是先关 WAF 观察十分钟,确认恢复后再精细化规则,而不是长期裸奔。

验证:Googlebot 返回码以 200/304 为主。

7. 用 staging 复现与灰度回退

生产直接改风险大。用子目录 staging 同库不同前缀复现:

define('WP_HOME','https://example.com/staging');
define('WP_SITEURL','https://example.com/staging');

复现后按“改一个变量、观察一天”的节奏回退。若用了对象缓存(Redis),每次改完执行 redis-cli FLUSHDB 避免旧 HTML 干扰判断。

这一层也常和发版流程绑在一起,我们在做 WordPress 企业网站开发 时会把 staging 与生产用同一套 CI 变量,避免口径差。

验证:staging 能稳定复现且修复方案在生产生效。

8. 预防:发布前检查清单

把前面步骤固化成发布卡点,比事后救火省力。

检查项命令/位置合格标准
robots/noindex设置→阅读、curl 源码无 noindex
证书有效期openssl s_client>30 天
返回码curl -w %{http_code}200
重定向404 日志 + 301 映射无裸 404
缓存redis-cli FLUSHDBHTML 更新

再配 UptimeRobot 或 Prometheus 告警到 5xx 与证书剩余天数。若团队缺人做常态化巡检,可参考 技术栏目 里的监控方案,或把发版卡点外包给固定服务商。

常见问题

流量掉了第一步到底看什么?

先看服务器 access.log 的 200 计数与 Googlebot 命中,确认是真跌还是统计工具错位,再查 robots 与证书。

301 做了但收录不回来怎么办?

在 GSC 用网址检查请求重新抓取,并确认旧 URL 返回 301 而非 404;同时检查新页面有没有被 noindex。

证书没问题但爬虫拿不到内容?

查 WAF 与 CDN 是否对 Googlebot 返回 403,用日志里的 UA 返回码分布定位,临时加白名单验证。

可执行动作清单

  1. 今天跑一遍 awk '$9==200' 对比日志,确认是否真跌。
  2. curl 首页与 robots.txt,关掉误开的 noindex。
  3. openssl 查证书剩余天数,配到期告警。
  4. 导出 404 清单,用 template_redirect 补 301。
  5. 把发布前五项检查写进 CI 卡点。

若需把上述排查做成常态化服务,欢迎了解我们的 WordPress 开发与运维支持。查看服务详情。

参考资料与延伸阅读

WPDaiwei

WPDaiwei-专业Wordpress网站定制开发提供商

需要 WordPress 开发服务?

24 小时内免费出方案与报价,国内国外都接单。

QQ