QQ登录
只需一步,快速开始
 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 12|回复: 0

伪静态开了,后台却登不进去——一度以为被黑

[复制链接]

8

主题

5

回帖

2474

积分

金牌会员

积分
2474
发表于 7 小时前 | 显示全部楼层 |阅读模式
伪静态开了,后台却登不进去——一度以为被黑

先说结论:不是被黑,是我自己开的伪静态里,那条「老链接 301」把后台登录的 POST 请求也一并 301 了。一个 URL 重写的问题,被我最开始那层「是不是被黑了」的滤镜放大成了半天的紧张。

给博客上了伪静态,URL 从 /index.php/archives/53/ 变成了干净的 /archives/53/,看着顺眼多了。第二天一开电脑,后台登不进去。

第一反应就是:是不是被黑了。刚暴露过源站 IP、后台又上不去,脑子里已经开始过挂马、劫持、被拖库的剧本了。结果查下来,两处坑,都很「安静」。

先分清「被黑」还是「路由坏了」

这两种的特征其实不一样,几分钟就能分开:

· 首页 / 是不是 200 —— 是,网站还活着;
· 有没有陌生跳转、可疑外链、后台文件时间戳有没有动 —— 都没有;
· 但 /archives/291/ 这种文章页,全都 404。

首页活着、文章全挂、文件没被动过 —— 这不像被入侵,更像路由(URL 重写)坏了。顺手记一句:慌的时候先把这三样过一遍,比瞎猜快。

坑一:重写规则掉了,整站文章 404

我们的伪静态规则本该是三段:老链接 301、真实文件/目录直连、其余丢给 index.php 路由。

但线上不知怎么,只剩下了那条 301 —— 请求从老地址跳到新地址之后就没人接了,干净 URL(/archives/N/)没有任何规则处理,nginx 直接 404。

现象特别有迷惑性:首页 / 是 200(它本身就是现成的 index.php),可只要点进任何一篇文章就 404。所以「后台登不进去」其实是整站半死不活的一个表现,只是我先撞上了后台。

坑二:那条 301,把后台登录也 301 了

这才是后台进不去的直接原因。

Typecho 后台的登录表单,提交地址是 /index.php/action/login,而且是个 POST。

而我们那条「老链接 301」是不分青红皂白的:
  1. if ($request_uri ~ ^/index\.php/(.*)$) { return 301 /$1; }
复制代码

任何 /index.php/... 进来都 301。登录的 POST 请求也被 301 到了 /action/login。

问题就在这:POST 收到 301,浏览器会把它降级成 GET 再发一次 —— 带着账号密码的那个请求体,就没了。后台拿到的是一次空的 GET,当然登不进去。

这条昨天伪静态一开其实就已经中了。我昨天验收时只 curl 了后台登录页面返回 200,没真的走一遍登录提交 —— 这就是教训:页面能开,不等于能登录。

修:先放行后台,再 301

正确顺序是:先放行后台和接口,再做 301,最后补回重写:
  1. # 1) 后台/接口入口直接放行(修后台登录:POST 不能被 301)
  2. if ($request_uri ~ ^/index\.php/(admin|action)) { break; }
  3. # 2) 老链接 301 → 干净 URL(保收录)
  4. if ($request_uri ~ ^/index\.php/(.*)$) { return 301 /$1; }
  5. # 3) 真实存在的文件/目录直接返回
  6. if (-f $request_filename) { break; }
  7. if (-d $request_filename) { break; }
  8. # 4) 其余交给 index.php 路由
  9. if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; }
复制代码

改完的验证清单(别只看首页)

· 文章页 /archives/N/ = 200
· 分类页、/feed/、/sitemap.xml = 200
· 老链接 /index.php/archives/N/ = 301 到新地址
· 后台登录真的点一次,能进去

三条教训

1. 给 Typecho 加「老链接 301」,必须放行 /index.php/action 和 /index.php/admin。不然 POST 登录被 301 成 GET,账号密码凭空消失。
2. 验伪静态别只 curl 页面 200,要真跑一遍后台登录提交。页面能开 ≠ 能登录。
3. 改 URL 规则前,先分清「被黑」和「路由坏了」:首页活着、文章全 404,大概率就是重写的问题。

最后,那「以为被黑」的半天,也算给以后值班的自己提个醒:慌之前,先看一眼首页和文件时间戳。

(一个站的问题,也就是改一条规则的事;机器一多、站点一多,这种「看一眼首页就够了」的判断还得靠批量工具省事 —— 我们平时用 RdpManager 批量连上去看,至少省掉反复登录那层。)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|七亿社区站长论坛

GMT+8, 2026-10-20 19:20 , Processed in 0.250371 second(s), 5 queries , Redis On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表