输完自家域名按回车,页面闪一下,落到一个花花绿绿的陌生站——这种时候第一反应多半是”完了,被黑了”。先别急着关电脑。网站跳转到其他网站这个毛病,成因其实就那么几类,大部分半小时内能定位。真正坑人的是瞎折腾:有人上来就重装系统,有人急着把域名换掉,结果原站还在,该跳的照跳。

先分清:是整站跳,还是只有手机跳、只有从搜索点进来才跳
这一步别嫌麻烦,能省一大半时间。用手机流量开一次,用电脑开一次,无痕窗口再开一次,直接输二级页面的完整地址(比如 /about.html)试试。整站所有页面都跳,多半出在域名解析或者服务器上的公共文件;只有首页跳、内页正常,那问题大概率在 index.php 或者首页模板;只有手机访问才跳,去翻那些判断 UA 的代码,很多马专门挑移动端下手。只有从搜索引擎点进来才跳,那就要看 referer 相关的逻辑。分类清楚了再动手,比乱翻文件强得多。
网站跳转到其他网站,域名解析被人动过是第一嫌疑
我见过最多的就是这种。域名管理后台的账号密码太弱,或者 NS 记录被人改到别的 DNS 服务商,A 记录一指,你服务器上干干净净,访问者照样被送到别处。查法很土但有效:在服务器上 dig 一下自己的域名,看返回的 IP 是不是你那台机器的;再跟域名服务商后台里显示的解析记录对一遍。对不上,先改密码、开二次验证、检查有没有陌生子域名和陌生解析,然后才去改记录,顺序反了等于白改。
还有一种更阴的:域名没被拿走,但控制台里多了一条你看不懂的转发规则,或者某个泛解析把流量引走了。域名注册商和 DNS 服务商的功能叫法各家不一样,具体入口以服务商后台和官方文档为准,别照着别人的截图瞎点。
源码里那几行 eval、iframe,翻起来比想象中深
文件层面的马,通常藏在几个固定位置:index.php 第一行、header 和 footer 模板、主题的 functions.php、还有 js 目录里那些名字很像正常文件的家伙。搜关键词比人眼扫快得多,grep -rn “eval(” 和 grep -rn “iframe” 挨个目录过一遍,重点看那些一长串看不出含义的 base64 串。加密马会把代码拆成好几段拼起来,光看开头几行根本看不出来。动文件之前先打包备份,出事了还能退回去,这习惯比什么工具都值钱。
伪静态和 301 规则:有时候是自己埋的雷
别以为跳转就一定是坏事。改过域名的站点,.htaccess 里留着一条 RewriteRule,或者 nginx.conf 里有一段 return 301,本来是想做老域名到新域名的过渡,结果规则写反了、匹配条件没加,所有请求都被推走。还有那种装了个来路不明的 SEO 跳转插件,后台里勾了”移动端跳转到移动版”,移动版地址却填错了。这类毛病有个特征:日志里能看到大量 301 或 302,状态码整齐得过分,一看就是规则干的。查 conf 文件比查马快,先看这里。
数据库和配置文件,WordPress 站点的老毛病
跑 WordPress 的站点,先去 wp_options 表里看 siteurl 和 home 这两行,被人改成一个陌生地址,前台就整体跳过去,后台可能还正常,特别迷惑人。然后是 wp-config.php 有没有多出来不认识的常量,主题目录里有没有刚被改过修改时间的文件。数据库里塞的东西比文件更隐蔽,因为没人天天去翻表。顺手把数据库账号权限收一收,别拿 root 直接连站点,这事很多人图省事,一放就是好几年。
不是你锅的那种:浏览器插件、运营商、公共 WiFi
本地环境也会骗人。装了个来历不明的浏览器插件,它就能在页面里插跳转;连着一个管理混乱的公共 WiFi,HTTP 明文请求被人插一杠子也是常事,特征是 https 的站点正常、http 的被跳。分辨办法很简单:换一台没装任何插件的设备,换一条网络(手机流量最干净),还是跳,那才轮到怀疑网站自身。这个顺序搞反了,容易白折腾一整天。
清完之后,还有几件收尾的事
马删干净、规则改回来,别就此收工。把域名和主机的密码全部换掉,能开二次验证的都开,FTP 和数据库账号一并处理;然后翻一遍访问日志,看看对方是从哪个入口进来的,那个洞不补,过阵子还会回来。搜索引擎那边,长时间跳转对排名不是好事,处理完可以在站长平台提交重新抓取和死链,具体流程以平台的官方说明为准。站点跑的是老版本 CMS 或者插件的话,趁这次一起升级,不少入口就是版本落后留下的。
顺序记住就行:先分现象,再查解析,然后翻文件和规则,最后才怀疑本地网络。这三处里通常只有一处中枪,剩下都是白忙。每次动网站之前先备份,别在线上直接改配置——回滚这两个字,踩过坑的人才懂它有多值钱。
【版权声明】:本站内容若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!