站长必知:如何应对网站被重定向
wordpress被重定向

首页 2025-09-02 22:49:27

诸位看官,今夜灯昏,老马我泡一壶普洱,聊一段让许多站长欲哭无泪的怪事——站点被重定向。别小看这轻飘飘的三个字,它能让流量像漏水的桶,一夜之间见底。咱不玩虚的,直接撂干货。
第一,先分清“绕圈子”的几种姿态。
  1. 域名到域名:A域名一敲,啪,跳到B域名。
  2. 目录到目录:/about 想留步,却被踹到 /about-us。
  3. 无限循环:A→B→A,浏览器原地打转,像追自己尾巴的小狗。
  4. HTTPS 与 HTTP 互踢:80 端口和 443 端口打得不可开交,用户一脸懵。
第二,老马我当年也踩过坑。凌晨三点,监控报警:跳出率飙到 98%。我抄起终端,curl -I 一看,301 连环跳,跟套娃似的。于是祭出三板斧:
  1. 查 DNS:dig +trace 域名,确认解析没被人动手脚。
  2. 看服务器:Nginx 配置里 if 语句写得像绕口令,Rewrite 规则层层嵌套。
  3. 审 WordPress:主题 functions.php 里被人塞了三行 wp_redirect,顺便把 PHP 的 header 函数也调了个遍。
第三,止血要快。
  1. 先临时关 CDN 缓存,别让脏规则继续扩散。
  2. 把 Nginx 的 return 301 改成 return 200,让站点先复活。
  3. 登录数据库,wp_options 表里把 siteurl 和 home 改回正确值。
  4. 清理浏览器缓存,再用 302 临时重定向做 A/B 测试,确保新规则稳如老狗。
第四,防患未然。
  1. 用版本控制锁死配置;谁改配置,先过 GitLab MR。
  2. 监控脚本每 5 分钟跑一次 curl -L -s -o /dev/null -w "%{http_code} %{url_effective}\n",一旦跳转链超过 2 跳,钉钉机器人直接 @全员。
  3. 强制 HTTPS 用 301,但记得在 Cloudflare 页面规则里把“Always Use HTTPS”放最前,别跟服务器打架。
诸位,技术如江湖,刀光剑影里,唯快不破。愿你下次再遇“绕圈子”,不必三更无眠,一杯普洱,一条指令,一拳打回原点。
——老马 记于西湖畔

【教程:WordPress 被重定向排障全纪录】
  1. 前置工具
    • SSH 终端 + sudo 权限
    • wp-cli
    • dig / nslookup
    • curl -I / curl -L
    • 浏览器无痕模式 + DevTools Network
  2. 判断重定向类型
    a. 浏览器打开站点,F12 → Network → 勾选 Preserve log。
    b. 观察状态码:
    301/308:永久重定向
    302/307:临时重定向
    c. 若出现循环,地址栏会闪动,状态码会反复出现相同域名。
  3. 排除本地缓存
    a. 无痕窗口再试。
    b. 若 CDN 已缓存,Purge 全部缓存或临时暂停 CDN。
  4. 检查 DNS 污染
    a. dig example.com +trace
    b. 若解析指向陌生 IP,登录域名注册商,确认 NS 记录、A 记录、CNAME 未被篡改。
  5. 审服务器配置
    a. Nginx:
    sudo nginx -T | grep -n rewrite|return
    常见坑:
    server {
    listen 80;
    return 301 https://request_uri;
    }
    若同一 server 块里又写了一次 80→443,会二次跳。
    b. Apache:
    sudo apache2ctl -S
    查看 VirtualHost 是否重叠,.htaccess 是否嵌套 RewriteRule。
  6. 审 WordPress 核心
    a. 登录数据库:
    SELECT * FROM wp_options WHERE option_name IN ('siteurl','home');
    若值与当前域名不符,直接 UPDATE。
    b. 检查主题与插件:
    wp plugin list --status=active
    wp theme list --status=active
    对可疑插件逐一禁用:wp plugin deactivate xxx。
    c. 扫描恶意代码:
    grep -r "wp_redirect|header.*location" wp-content/
  7. 处理 HTTPS 混跳
    a. Cloudflare:SSL/TLS → Edge Certificates → Always Use HTTPS 关闭,改用 Nginx 统一处理。
    b. Nginx 统一写法:
    server {
    listen 80;
    server_name example.com;
    return 301 https://example.com$request_uri;
    }
  8. 修复后验证
    a. curl -I https://example.com
    期望输出:HTTP/2 200
    b. curl -L https://example.com | grep -i "http-equiv.*refresh"
    若仍有 meta refresh,检查主题 header.php。
    c. 浏览器无痕访问,确认无再跳转。
  9. 持续监控
    a. 用 UptimeRobot 每 5 分钟检测一次 200 状态码。
    b. 若状态码非 200,钉钉/Slack 报警。
    c. 每周跑一次 wp-cli checksum core,确保核心文件未被篡改。
至此,WordPress 被重定向这一“绕圈子”怪病,已可手起刀落,斩于马下。
MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道