安装后要按「伪静态 → 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,登录时除密码外再输入一次动态验证码)。
具体做法:
- 用户名不要用 admin,也不要用域名本身;用与站点无关的字符串,例如
ops_editor_7。
- 密码设为 14-16 位,混合大小写字母、数字、符号,不要用生日、手机号、字典词。
- 新建一个有管理权限的账号,用它登录成功后,再删除或降权默认管理员账号。
- 后台开启登录失败次数限制,例如 5 次失败锁定 15 分钟;同时关闭前台用户注册,或改为注册后需审核。
- 安装时若能选数据库表前缀,别用默认的
wp_、phpcms_ 这类,换成随机字符串,可降低 SQL 注入批量扫描的成功率。
三步都做完,怎么一次性验证?
结论:三条命令或三次操作即可确认全部生效。执行 curl -I http://你的域名,返回 301 且 Location 指向 https;浏览器打开一个伪静态地址能正常显示内容,不是 404;退出登录后用新管理员账号密码进入后台成功,用旧 admin 账号登录失败。
最后补一句:改完配置后清一次站点缓存和浏览器缓存,避免看到的是旧规则的结果。这三步做完,站点才算真正可上线。