返回博客

安全防护

为什么及如何修改 WordPress 默认登录链接

2026-09-04

阅读约:13分钟

WordPress 默认的登录地址是 wp-login.php,这个地址人尽皆知。无论你的站点部署在哪里,任何人只要在域名后加上 /wp-login.php/wp-admin,就能看到你的登录页面。这看似无害,实际上却是许多安全问题的起点。本文将解释为什么要修改默认登录链接,并给出几种可行的修改方法。

一、为什么要修改默认登录链接

1. 检测目标不同

wp-login.php 是 WordPress 全网统一的登录入口。攻击者无需对你做任何侦察,只需编写脚本批量访问 http://任意域名/wp-login.php,就能找到登录页面。随后,他们会用常见的用户名(如 admin)配合字典中的密码反复尝试登录。这类自动化攻击 7×24 小时不间断运行,只要你的密码不够强,迟早会被攻破。

2. 减少被扫描的攻击面

互联网上存在大量专门扫描 WordPress 站点的僵尸网络。它们每天扫描数以亿计的域名,寻找暴露的 wp-login.phpxmlrpc.php 等入口。当你把登录地址改成一个只有自己知道的路径后,这些扫描请求大多会返回 404,攻击者无法定位真正的登录入口,自然也就无法发起登录爆破。

3. 降低服务器资源消耗

每次暴力破解请求都要经过 PHP 解析、数据库查询(验证用户名密码)。当攻击流量较大时,登录页会成为服务器负载的瓶颈,严重时会导致站点卡顿甚至宕机。隐藏登录入口后,绝大多数恶意请求在 Web 服务器层就被挡掉,根本不会进入 PHP 和数据库层。

4. 提升管理后台的隐私性

对于企业站点或个人博客,你未必希望访客轻易找到后台入口。修改登录链接相当于给后台加了一把”隐形的锁”,普通访客无法随意访问管理界面,也减少了被人盯上的风险。

需要强调的是:修改登录链接只是”安全遮蔽”(security through obscurity),它不能替代强密码、双因素认证、定期更新等核心安全措施,但作为纵深防御的一环,它成本低、收益明显,值得采用。

二、修改默认登录链接的几种方法

下面介绍从易到难的几种方案,你可以根据自身技术水平选择。

方法一:使用插件(推荐新手)

这是最简单、最安全的方式,无需写任何代码,且修改后可在后台一键恢复。

推荐插件:WPS Hide Login

  • 在 WordPress 后台「插件 → 安装插件」中搜索 WPS Hide Login,安装并启用。
  • 进入「设置 → WPS Hide Login」。
  • Login url 字段中填入你想要的新登录地址,例如 secret-door
  • Redirect url 字段中填入当有人访问旧地址时要跳转的页面,例如首页或 404 页面。
  • 点击「保存更改」。

保存后,你的登录地址就变成了 https://你的域名/secret-door,而访问 /wp-login.php 则会被重定向。

其他可选插件:

  • iThemes Security (Better WP Security):功能更全面的安全插件,修改登录地址只是其众多功能之一。
  • All-In-One Security (AIOS):同样提供隐藏登录页功能,并附带防火墙、文件扫描等。

注意:启用插件后,务必记下新的登录地址。建议把它收藏到书签或记录到密码管理器中,以免自己都进不去后台。

方法二:修改服务器配置(无需插件)

如果你不想安装额外插件,可以直接在 Web 服务器层做重写。这种方式更轻量,但需要你对服务器配置有一定了解。

Nginx 配置

在站点的 server 块中加入如下规则(假设新登录地址为 /secret-door):

# 隐藏默认登录页,访问 wp-login.php 返回 404
location = /wp-login.php {
    return 404;
}

# 将自定义路径重写到真实的 wp-login.php
location = /secret-door {
    rewrite ^ /wp-login.php last;
}

修改后执行 nginx -t 检查语法,再用 systemctl reload nginx 重载配置。

注意:这种方式需要同时处理 wp-admin 的访问以及登录后跳转,逻辑较为复杂,建议配合插件使用或在测试环境验证后再上线。

Apache 配置(.htaccess)

在网站根目录的 .htaccess 文件中(放在 WordPress 默认规则之前)添加:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # 记录是否是来自自定义登录页的内部请求
    RewriteRule ^secret-door$ wp-login.php [L]

    # 阻止直接访问 wp-login.php(非 POST 登录提交时)
    RewriteCond %{REQUEST_URI} ^/wp-login\.php
    RewriteCond %{QUERY_STRING} !^action=logout
    RewriteRule ^ / [R=403,L]
</IfModule>

.htaccess 配置容易因规则冲突导致登录异常,修改前务必备份原文件,出现问题时可快速回滚。

方法三:通过 functions.php 添加钩子

如果你正在开发主题,也可以在主题的 functions.php 中用 WordPress 钩子来拦截登录请求。这种方式灵活,但代码维护成本相对较高,适合有开发能力的用户。

// 自定义登录地址
add_action('init', function () {
    $custom_login_slug = 'secret-door';

    // 拦截对 wp-login.php 的直接访问
    if (strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false
        && !isset($_POST['wp-submit'])) {
        wp_redirect(home_url('/'));
        exit;
    }

    // 处理自定义登录地址
    if (strpos($_SERVER['REQUEST_URI'], '/' . $custom_login_slug) !== false) {
        require ABSPATH . 'wp-login.php';
        exit;
    }
});

这段代码只是基本思路示意,生产环境使用时还需考虑登出、注册、找回密码等子动作的处理,否则可能造成这些功能失效。

三、修改时的注意事项

  • 牢记新地址:修改后旧地址将失效,务必把新登录地址保存到安全的地方。一旦遗忘,你可能需要通过 FTP 或文件管理器禁用插件或删除相关代码才能恢复。
  • 不要影响核心功能:登录页不仅用于登录,还涉及登出、注册、找回密码等动作。任何修改都要确保这些动作仍然可用,否则会影响正常使用。
  • 配合其他安全措施:隐藏登录入口只是第一道防线,建议同时启用强密码策略、限制登录尝试次数(Limit Login Attempts 类插件)、开启双因素认证,并保持 WordPress、主题、插件的及时更新。
  • 缓存与 CDN:如果你的站点启用了页面缓存或 CDN,修改登录地址后要清理缓存,并对新的登录路径设置缓存排除规则,否则可能出现登录状态异常。
  • 先测试后上线:在正式环境修改前,最好在测试环境验证一遍,确认登录、登出、找回密码等功能都正常后再部署到生产站点。

四、总结

修改 WordPress 默认登录链接 wp-login.php,能有效减少自动化扫描和暴力破解带来的风险,同时降低服务器资源消耗。对于大多数用户,使用 WPS Hide Login 这类插件是最省心的选择;对服务器配置熟悉的用户,也可以通过 Nginx/Apache 规则实现更轻量的方案。

记住,它只是纵深防御的一环,真正的安全需要多层措施共同保障。把登录入口藏起来,再配合强密码与双因素认证,你的站点就能把绝大多数自动化攻击挡在门外。

标签:

Wordpress建站 安全防护