⭐ 推荐:社区规则条款 V1.0

安装后配置(伪静态、SSL、管理员账号)

juming
juming 初级会员萌新站长
发布于 2026-10-15 05:34 ·3 浏览 ·3 回复
内容摘要

安装后应按伪静态、SSL、管理员账号的顺序配置:先配伪静态再签发证书并强制HTTPS,最后改管理员账号密码并开启二次验证;顺序颠倒会导致后台登录反复跳回http。

安装后要按「伪静态 → SSL → 管理员账号」这个顺序配置:先让动态链接变成静态样式地址,再签发证书并全站强制 HTTPS,最后改名改密、开启二次验证。顺序反了会出问题——先上 HTTPS 再改站点地址,后台容易陷入「登录后跳回 http」的循环。

伪静态是什么?为什么安装后第一件事就要配它?

结论:伪静态是把 /index.php?p=123 这类带参数的动态地址,通过服务器重写规则变成 /archives/123.html 这类静态样式的地址,必须在改域名协议(http→https)之前配好。

原因有两个。第一,伪静态规则里通常写死了入口文件和路径,先配好再上 HTTPS,URL 结构不会二次变动,已经收录的链接不用重定向两次。第二,搜索引擎收录的是伪静态后的地址,改动越晚,需要做的 301 跳转就越多。

Nginx 的写法(放在 location / 里,注意放在其它 location 之后):

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

Apache 需要先开启 mod_rewrite,并把站点目录的 AllowOverride 设为 All,然后在网站根目录的 .htaccess 写:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

改完必须重载服务:nginx -s reload 或 systemctl reload nginx。验证方法:随便打开一个伪静态地址(例如 /archives/1.html),返回页面内容而不是 404,就说明规则生效。

SSL 证书怎么装,怎么强制跳转 HTTPS?

结论:用 Let's Encrypt 免费证书配合 certbot,两条命令完成签发和自动续期,HTTP 到 HTTPS 用 301 永久跳转。

安装与签发(Nginx 环境):

apt install certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com

certbot 会写入证书路径并自动加上 80 端口跳转。想手动控制跳转规则,就在 80 端口的 server 块里写:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

证书 90 天到期,certbot 会注册 systemd 定时任务自动续期,用 systemctl list-timers | grep certbot 确认任务存在;手动测试续期用 certbot renew --dry-run。

关键注意点:启用 HTTPS 后,要去站点配置里把「站点地址(Site URL)」和「后台地址」都改成 https:// 开头。这两项不改,后台登录会反复跳回 http,表现为密码正确却一直回到登录页。

管理员账号要怎么设置才安全?

结论:删除或改名默认的 admin、administrator、root、test 账号,新密码长度至少 12 位,并开启两步验证(2FA,登录时除密码外再输入一次动态验证码)。

具体做法:

  1. 用户名不要用 admin,也不要用域名本身;用与站点无关的字符串,例如 ops_editor_7。
  2. 密码设为 14-16 位,混合大小写字母、数字、符号,不要用生日、手机号、字典词。
  3. 新建一个有管理权限的账号,用它登录成功后,再删除或降权默认管理员账号。
  4. 后台开启登录失败次数限制,例如 5 次失败锁定 15 分钟;同时关闭前台用户注册,或改为注册后需审核。
  5. 安装时若能选数据库表前缀,别用默认的 wp_、phpcms_ 这类,换成随机字符串,可降低 SQL 注入批量扫描的成功率。

三步都做完,怎么一次性验证?

结论:三条命令或三次操作即可确认全部生效。执行 curl -I http://你的域名,返回 301 且 Location 指向 https;浏览器打开一个伪静态地址能正常显示内容,不是 404;退出登录后用新管理员账号密码进入后台成功,用旧 admin 账号登录失败。

最后补一句:改完配置后清一次站点缓存和浏览器缓存,避免看到的是旧规则的结果。这三步做完,站点才算真正可上线。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2071.html
转载请注明出处,版权归原作者所有。
他们都看过 1 人浏览过
GJ论坛站长
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 3

域名注册
域名注册 版主萌新站长 👑黑卡会员 1楼 2026-10-15 05:54

顺序没错,但我会加一个兜底:装 SSL 之前先在 wp-config.php 里写死 WP_HOME / WP_SITEURL,这样万一 HTTPS 配歪了,改一行文件就能回退,不用去数据库里捞。

define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');

常量优先级高于数据库,写进去之后后台的「站点地址」选项会被锁定,跳转循环基本不会出现。已经踩坑进不去后台了,就注释掉这两行,或者直接改库:

UPDATE wp_options SET option_value = 'https://example.com'
WHERE option_name IN ('home','siteurl');

(记得带表前缀。)

「登录后跳回 http」真正的高发原因其实是反向代理。 宝塔、CDN、Docker 前面的 Nginx 反代场景下,回源是 http,PHP 拿不到 $_SERVER['HTTPS'],于是自己判断「当前不是 HTTPS」→ 跳 http → 又被强制到 https,循环。光改站点地址救不回来,得补上:

proxy_set_header X-Forwarded-Proto $scheme;

或者在 wp-config.php 顶部临时兜一下:

if (($_SERVER['HTTP_X_FORWARDED_PROTO'] ?? '') === 'https') { $_SERVER['HTTPS'] = 'on'; }

HSTS 建议放到最后一步再加,确认全站没有 mixed content(浏览器 F12 看有没有黄色混合内容警告)再上 max-age,否则一个漏网的 http:// 图片就能让整站打不开。

管理员那步补两个细节:别去改 ID=1 那位的用户名,正确做法是新建一个管理员 → 登录验证 → 删掉旧的,避免权限和作者归档错乱;开二次验证之前先把恢复码抄下来、确认绑定邮箱能收信,不然丢手机就是锁死自己。伪静态生效后顺手重新生成 sitemap,Search Console 里也把站点地址更新成 https。

周末
周末 萌新站长 #1821 2楼 2026-10-15 06:16
域名注册:顺序没错,但我会加一个兜底:**装 SSL 之前先在 wp-config.php 里写死 WP_HOME / WP_SITEURL**,这样万一 HTTPS 配…

这几条兜底我基本都同意,反代那条尤其关键——宝塔/CDN 场景下的"登录跳回 http"九成出在这儿,光改站点地址确实救不回来。补几个容易漏的点:

写死 WP_HOME/WP_SITEURL 之后,后台那两个选项会被锁死,同时某些迁移插件、临时换测试域名的操作也会失效,所以迁移或调试完记得放开。另外 SSL 强制这块 WP 自带常量,配合用更省事:

define('FORCE_SSL_ADMIN', true);

反代除了 X-Forwarded-Proto,最好把 proxy_set_header Host $host; 和 X-Real-IP $remote_addr; 一起补上,不然还会出现后台跳错域名、评论 IP 全是 127.0.0.1。还有个隐性问题:X-Forwarded-Proto 是客户端可伪造的头,如果源站 IP 直接暴露,别人塞个 X-Forwarded-Proto: https 就能骗过判断,稳妥做法是源站防火墙只放行 CDN 回源段。

删旧管理员那步要特别注意——删除时一定要勾"将该用户的内容转移给新用户",否则 ID=1 名下的文章会跟着一起没。另外 user_login 本身后台就改不了,能改的只是昵称和 nicename,作者归档错乱多半是改 nicename 引起的。

最后补一句:Search Console 的 https 属性是独立的,不是"更新"而是新建资源重新验证,旧属性保留观察,再用地址更改工具提交迁移。HSTS 建议先从 max-age=300 跑几天,确认无 mixed content 再往一年加。

萝卜特棒
萝卜特棒 正式会员萌新站长 #1856 3楼 2026-10-15 06:21
周末:这几条兜底我基本都同意,反代那条尤其关键——宝塔/CDN 场景下的"登录跳回 http"九成出在这儿,光改站点地址确实救不回来。补几个容易漏的点: 写死 `W…

同意,周末这几条基本就是"配置项之外"最容易翻车的地方,我按实操顺序补几个能直接抄的细节。

迁移场景千万别直接改数据库。 WP_HOME/WP_SITEURL 放开之后改站点地址,如果只是进 phpMyAdmin 里跑 UPDATE wp_options SET option_value=...,序列化过的数据(widgets、页面构建器、主题配置里存着老域名的那些)会直接断链,前台看着正常、点进去一堆 404。稳妥做法是走 WP-CLI:wp search-replace 'http://old.com' 'https://new.com' --all-tables --precise,跑完再 wp cache flush。另外这两个常量写在 wp-config.php 里要放在 /* That's all, stop editing! */ 那一行上面,否则不生效——这个坑比想象中多人踩。

FORCE_SSL_ADMIN 要等 HTTPS 全站确认无误再加。 它跟前面说的常量不一样,一旦证书有问题或者有 mixed content,你连后台都进不去,只能去服务器上改文件救回来。建议顺序是:先让后台能通过 https 正常登录、F12 Console 无报错,再写这行。

只信任 CDN 段这件事可以做成配置化。 与其在防火墙上手写 IP 段,不如用 Nginx 的 set_real_ip_from + real_ip_header X-Forwarded-For 配 geo 模块,只对白名单段做还原,白名单外的请求直接丢弃伪造头。这样 X-Real-IP 才可信,评论 IP 也不会全变成回源节点地址。Cloudflare 用户可以直接上 Authenticated Origin Pulls,比维护 IP 段省心。

删 ID=1 那段再补一句:**先新建管理员、退出、用新账号完整登录一次确认权限正常,再回去删旧账号**,中间别省。Multisite 环境下 ID=1 还是 super admin,删之前记得先在 Network Admin 里转移网络管理员身份。

Search Console 和 HSTS 你都说到了,只提醒一点:HSTS 的 preload 列表加进去容易,移除要等浏览器版本更新、前后可能拖几个月,没到"确定长期不用 http"的地步先别提交 preload,includeSubDomains 同理。

至于 mixed content 排查,最快的办法是浏览器 Console 加一层过滤(搜 Mixed Content),再看 Network 里被 block 的请求域名,比一个个翻主题文件快得多。