输入账号密码,点登录,页面一闪又回到登录框——这个问题比你想的常见。原因有好几种,从 cookie 到插件到数据库都有可能。下面按从简单到复杂的顺序排查。
先确认是不是 cookie 的问题
浏览器 cookie 过期或损坏是最常见的原因。症状是:输完密码点登录,页面刷新后还在登录页,不报错也不跳转。
处理方法:按 F12 打开开发者工具,切到 Application(Chrome)或 Storage(Firefox),找到 Cookies 里的你的域名,全部删掉。然后关掉浏览器重新打开,再试一次。如果用了缓存插件,顺便清一下浏览器缓存。
还有一个经典坑:wp-config.php 里的 WP_HOME 和 WP_SITEURL 跟实际访问的域名不一致。比如设置的是 https://example.com,但你用 http:// 或者带 www. 的地址访问,cookie 域不匹配就会导致登录失败。确认地址栏的域名和 wp-config 里写的一致。
插件冲突导致登录页白屏或报错
如果登录页直接白屏或者跳出 PHP 错误,大概率是某个插件的问题。特别是安全插件(限制登录次数、双因素认证)和缓存插件容易出状况。
快速定位的办法:用 FTP 或 SSH 连到服务器,把 wp-content/plugins 目录改名成 plugins-old,然后访问 wp-login.php。如果能登录了,说明就是某个插件的问题。把目录名改回来,然后逐个插件文件夹改名来排除,找到罪魁祸首。
安全插件比如 Wordfence、Limit Login Attempts 有时候会因为 IP 被误封而拒绝登录。检查插件的锁定列表,把你的 IP 解除。
主题 functions.php 出了问题
有些主题在 functions.php 里加了登录重定向逻辑,代码写错了就会把登录请求无限重定向。把当前主题目录改名,WordPress 会自动回退到默认主题,然后试登录。如果能进去,问题就在主题文件里。检查 functions.php 里有没有 wp_redirect 或 login_redirect 相关的代码。
数据库 wp_options 表损坏
如果以上都排除了,查一下数据库。wp_options 表里的 siteurl 和 home 选项有时候会被改错(比如迁移站点时忘了改)。用 phpMyAdmin 或命令行连上数据库:
SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl','home');
确认值是正确的域名,带 https:// 前缀。如果不对,直接 UPDATE 改回来。
.htaccess 规则导致重定向循环
Apache 服务器上,.htaccess 里写错的重定向规则会把 wp-login.php 也卷进去。临时把 .htaccess 改名(比如 .htaccess-bak),WordPress 会自动生成一个默认的。如果能登录了,说明是 .htaccess 的规则有问题,把自定义规则逐条加回去排查。
实在进不去?用 functions.php 重置
如果你有 FTP/SSH 权限但没有管理员账号,可以在当前主题的 functions.php 末尾加一段代码临时创建管理员:
$user = 'tempadmin';
$pass = 'ChangeMe123!';
$email = 'temp@example.com';
if (!username_exists($user)) {
$id = wp_create_user($user, $pass, $email);
$u = new WP_User($id);
$u->set_role('administrator');
}
登录成功后第一件事:删掉这段代码,然后改掉这个临时账号的密码。留着这段代码等于给网站留个后门。
更多 WordPress 运维教程,请访问 fenij.com。
常见问题
问:清了 cookie 还是登不进去怎么办?
答:换一个浏览器或无痕模式试试。如果换了浏览器能进去,说明是浏览器扩展(特别是广告拦截器)干扰了登录请求。把广告拦截插件对 wp-login.php 放行就行。
问:提示”ERROR: Cookies are blocked due to unexpected output”?
答:wp-config.php 文件第一行 <?php 前面有空行或 BOM 头。用文本编辑器打开,删掉 <?php 之前的所有空格和空行,保存为 UTF-8 无 BOM 格式。
问:迁移站点后登录跳转到旧域名?
答:数据库里的 siteurl 和 home 还指向旧域名。在 wp-config.php 里强制设置:define('WP_HOME','https://新域名'); define('WP_SITEURL','https://新域名');,登录后再到后台设置里改永久链接。
问:登录后跳转到 wp-admin 但显示”您没有足够的权限”?
答:你的用户角色不是管理员。用 phpMyAdmin 查 wp_usermeta 表里 wp_capabilities 字段,确认值是 a:1:{s:13:"administrator";b:1;}。如果不对,直接改这个字段。