WordPress 如何隐藏后台登陆入口?

首先,为何要隐藏正常的后台登陆入口?通过最近一段时间的使用发现,每天都有大量的扫描暴力破解,不断的尝试后台弱口令登陆,虽然对自己平时影响不大,但这是安全问题需要重视。

优先用WPS Hide Login插件(最简单、最稳);也可以用functions.php 代码服务器规则(.htaccess/Nginx)隐藏 / 改后台地址,核心是让/wp-admin/wp-login.php失效,只留你自定义的入口。


一、插件法(推荐,新手首选)

1. WPS Hide Login(最流行)

WPS Hide Login 隐藏WordPress管理后台地址
  1. 后台 → 插件 → 安装插件 → 搜索 WPS Hide Login → 安装并激活。
  2. 设置 →右边往下拉(新版已经整合在设置里) WPS Hide Login:
    • Login URL:填自定义路径,如 my-secret-admin(别用admin/login这类常见词)。
    • Redirect URL:非法访问时跳转(如首页或 404)。
  3. 保存后,新地址:你的域名/my-secret-admin;原/wp-admin/wp-login.php直接 404。
  4. 急救:忘地址时,FTP 进wp-content/plugins/,把wps-hide-login改名(如加_bak),即可恢复默认登录。

2. 备选轻量插件

  • Hide WP Admin Login:功能同上,设置更简单。
  • Admin Login URL Change:只改 slug,轻量无冗余。

二、代码法(不用插件,适合懂基础 PHP)

方案 A:functions.php 拦截(最简)

  1. 后台 → 外观 → 主题文件编辑器 → 选functions.php(用子主题,避免更新覆盖)。
  2. 末尾添加:

// 隐藏默认登录,自定义参数
add_action('login_enqueue_scripts','login_protect');
function login_protect(){
    // 仅允许 ?key=你的密钥 访问
    if($_GET['key'] !== 'my-super-secret-123'){
        wp_redirect(home_url()); // 跳首页
        exit;
    }
}
  1. 新登录地址:域名/wp-login.php?key=my-super-secret-123;直接访问/wp-login.php会跳转。

方案 B:functions.php 改路由(更彻底)

// 自定义登录路由
add_action('init', 'custom_login_route');
function custom_login_route() {
    $new_slug = 'hidden-login-2026'; // 自定义路径
    global $wp;
    $wp->add_query_var('custom_login');
    add_rewrite_rule('^'.$new_slug.'/?$','index.php?custom_login=1','top');
}

// 拦截默认登录
add_action('template_redirect', 'block_default_login');
function block_default_login() {
    if (is_admin() && !current_user_can('read')) {
        wp_redirect(home_url());
        exit;
    }
    if ($_GET['custom_login'] == 1) {
        include(ABSPATH . 'wp-login.php');
        exit;
    }
}

保存后,固定链接 → 保存(刷新规则);新地址:域名/hidden-login-2026


三、服务器配置法(适合高阶用户)

Apache(.htaccess)

  1. 编辑网站根目录.htaccess(开启显示隐藏文件)。
  2. # BEGIN WordPress前添加:

apache

# 隐藏默认登录
<IfModule mod_rewrite.c>
RewriteEngine On
# 拦截 wp-login.php
RewriteCond %{THE_REQUEST} ^GET.*wp-login\.php [NC]
RewriteRule ^(.*)$ - [R=404,L]
# 拦截 wp-admin(允许admin-ajax.php)
RewriteCond %{REQUEST_URI} ^/wp-admin [NC]
RewriteCond %{REQUEST_URI} !^/wp-admin/admin-ajax\.php$ [NC]
RewriteRule ^(.*)$ - [R=404,L]
# 自定义登录路由:域名/my-admin
RewriteRule ^my-admin$ wp-login.php [L]
</IfModule>
  1. 保存后,新地址:域名/my-admin

Nginx

在网站配置的server块内添加:

# 拦截默认登录
location ~* ^/(wp-login\.php|wp-admin) {
    deny all;
    return 404;
}
# 自定义登录
location /my-secret-login {
    try_files $uri $uri/ /wp-login.php;
}

重启 Nginx 生效。


四、重要注意事项

  1. 备份优先:改代码 / 配置前,备份functions.php.htaccess和数据库。
  2. 子主题必用:改functions.php务必用子主题,否则主题更新会覆盖代码。
  3. 记住新地址:改完立即测试并加入书签;插件法忘地址可删插件目录恢复。
  4. 安全强化:搭配强密码限制登录尝试(如 Limit Login Attempts 插件)、双因素认证,效果更好。

五、方案对比

  • 插件法:⭐⭐⭐⭐⭐ 最简单、零代码、可逆,新手首选。
  • functions.php:⭐⭐⭐⭐ 轻量无插件,适合懂 PHP 用户。
  • 服务器规则:⭐⭐⭐⭐ 最彻底,适合高阶用户,需服务器权限。
本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。
       本系列的一部分

WordPress建站

Post 11 of 11

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress