V400 站点 Plan A 修复报告

一、改动清单(13 个文件,全部先备份后上传)

#文件(相对 /htdocs/V400/)动作说明
1_https.php新建PHP 层 http→https 兜底;仅 GET/HEAD 301,POST 不跳;CLI/已是 https 自动跳过
2includes/core.php改 1 行ROOT_DIR 之后插入 require_once ROOT_DIR . '/_https.php';,覆盖全部公开页
3admin/_guard.php新建后台 IP 白名单:127.0.0.1、::1、112.12.48.0/24;未授权返回 403;顶部有 bypass 开关
4admin/login.php改 1 行<?php 之后、session_start() 之前 require_once __DIR__.'/_guard.php';
5admin/common.php改 1 行<?php 之后加 _guard.php,覆盖 49 个后台业务页
6404.php改 2 处加 http_response_code(404);主文案改"页面走丢了";新增三按钮:返回首页/产品中心/新闻列表
7news/detail.php改 1 行else 分支($news 为空)开头加 http_response_code(404)
8-15news/n20261016_2318*.html ×8覆盖静态归档提示页(noindex + 3s refresh + canonical 指向 news.php)
16sitemap.xml改删除上述 8 个坏 html 的 <loc>(279 → 271)

二、备份位置

FTP 目录:/htdocs/V400/_backup_20261022/

├── 404.php                       (1786 bytes, 原文件)
├── sitemap.xml                   (52555 bytes, 原文件)
├── admin/login.php               (5394 bytes)
├── admin/common.php              (18491 bytes)
├── includes/core.php             (16549 bytes)
├── news/detail.php               (3610 bytes)
└── news/                          (8 个原坏文件:3×0字节 + 5×725字节)

回滚:FTP 把对应文件从 _backup_20261022/ 按相对路径 STOR 回原位置即可。

三、DeepSeek 生成代码要点

四、回归测试结果

4.1 关键 URL 验证

验证项URL期望实际通过
https 首页https://www.hedalong.com/V400/200200 (160ms)✅
http 首页 301http://www.hedalong.com/V400/301→https301, Location: https://www.hedalong.com/V400/✅
不存在新闻详情.../news/detail.php?id=notexist404404 (154ms)✅
不存在 php.../nonexist.phpnginx 黑 404404 (123ms)✅(记录项)
归档页.../news/n20261016_2318202591.html200 + 已归档 + noindex200, 含"已归档"+noindex✅
admin 登录页(非白名单 IP).../admin/login.php403 未授权403, 含"未授权访问"✅

4.2 抽样正常页 TTFB

页面状态码TTFB
home200147.9 ms
about301120.8 ms
news.php200141.1 ms
news detail 130164.7 ms
news detail 230153.5 ms
news detail 330157.0 ms
news detail existing404157.2 ms
guobiao200139.0 ms
oubiao200158.5 ms
contact200157.2 ms
sheji200153.3 ms

about、news detail 1/2/3 返回 301 是因为 sitemap.xml 里的 <loc> 仍是 http:// 前缀,由 nginx 做全站 http→https 301,属预期行为,非本次改动引入。

4.3 全量状态码分布(sitemap 爬取)

状态码改前(279 URL)改后(271 URL,已剔除 8 个坏 html)变化
200274264sitemap 删 8 条,分母变小;200 数无回归
301000
40457+2(均为 detail.php 真 404 修复带来的预期变化)

改后 404 清单(共 7 条):

五、大龙哥须知(重要)

  1. admin 后台现在被 IP 白名单挡住了。从本次执行机(非白名单)curl admin/login.php 返回 403"未授权访问",这是预期效果。
  2. 如需登录后台,请确保出口 IP 在 112.12.48.0/24 段内(或回环)。如果人在外面:
    • FTP 登录,编辑 /htdocs/V400/admin/_guard.php
    • 把 $GLOBALS['ADMIN_GUARD_BYPASS'] = false; 临时改成 true,保存上传
    • 登录后台后务必改回 false 再保存
  3. 8 个坏新闻页已全部覆盖为静态归档页(noindex + 3 秒后跳回新闻列表),sitemap.xml 也已删掉这 8 条 <loc>,蜘蛛不会再爬到死链。
  4. http→https:nginx 层 301 保持不变,PHP 层 _https.php 仅作兜底;POST 提交不会被误跳。
  5. 未触碰:lhqzj.cn、compete/、V400 业务代码(products/、data/、admin 业务逻辑、sso.php)、308MB 的 v400_backup.zip、nginx/.htaccess。

六、回滚预案

如发现任何页面异常,FTP 登录 → 进入 /htdocs/V400/_backup_20261022/ → 按原相对路径把文件 STOR 回 /htdocs/V400/ 对应位置即可。