站长必知:如何应对网站被重定向
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 被重定向这一“绕圈子”怪病,已可手起刀落,斩于马下。
nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密