.htaccess - 当非管理员尝试访问 wp-admin 或 wp-login.php 时,如何将用户重定向到 404 页面未找到错误

标签 .htaccess wordpress

出于安全原因,我试图通过重写链接来限制我的 wordpress 站点管理员和登录面板对非管理员用户的访问,这样如果用户输入 http://www.mysite.com/wp-login.phphttp://www.mysite.com/wp-admin他被重定向到错误 404 页面,但如果他输入 http://www.mysite.com/blah-loginhttp://www.mysite.com/blah-admin重定向到我的 WP 管理员或登录面板。我有以下选择来做到这一点。

  • 重写我不擅长的 .htaccess 文件,不想弄乱我网站的 .htaccess 文件。
  • 使用我通过编写一个小插件所做的 $wp_rewrite 类,其代码如下。
    register_activation_hook( __FILE__, 'activate' );
    function activate() {
        rewrite();
        flush_rewrite_rules();
    }
    register_deactivation_hook( __FILE__, 'deactivate' );
    function deactivate() {
        flush_rewrite_rules();
    }
    add_action( 'init', 'rewrite' );
    function rewrite() {
        add_rewrite_rule( 'blah-admin/?$', 'wp-admin', 'top' );
        add_rewrite_rule( 'blah-login/?$', 'wp-login.php', 'top' );
        add_rewrite_rule( 'blah-register/?$', 'wp-register.php', 'top' );
    }
    

    它完美运行,唯一的问题是它不限制对 wp-admin、wp-login.php 或 wp-registe.php 的访问(这是必须的)。
  • 我可以将以下规则写入新的 .htaccess 文件。
    AuthUserFile /dev/null
    AuthGroupFile /dev/null
    AuthName "Wordpress Admin Access Control"
    AuthType Basic
    
    <LIMIT GET>
      order deny,allow
      deny from all
      allow from xxx.xxx.xxx.xxx
    </LIMIT>
    

    并将其放在 wp-admin 文件夹下,它有两个缺点,一个是它只会限制对我的 wp-admin 文件夹的访问,而不是 wp-register.php 或 wp-login.php,第二个是我是 DHCP 客户端,所以 allow from xxx.xxx.xxx.xxx不会为我工作。
  • 我可以使用第二条和第三条规则的组合,但它绝对不起作用,因为我无法为整个被阻止的文件夹提供替代永久链接。
  • 作为最后的手段,我可​​以使用 wp-modal 插件的永久链接重写功能,它就像一个魅力,但这个插件与我的主题不兼容。

  • 那么我的问题真的有解决方案吗?

    最佳答案

    如果他们尚未登录,我使用此代码段将人们重定向到远离后端。您可以修改它以指向您的 404:

    // BLOCK BACKEND ACCESS FOR NON-ADMINS
    add_action( 'init', 'blockusers_init' );
    function blockusers_init() {
        // If accessing the admin panel and not an admin
        if ( is_admin() && !current_user_can('level_10') ) {
            // Redirect to the homepage
            wp_redirect( home_url() );
            exit;
        }
    }
    

    只需更改 home_url() 中的 URL在 wp_redirect 下为您的 404 页面添加功能.

    关于.htaccess - 当非管理员尝试访问 wp-admin 或 wp-login.php 时,如何将用户重定向到 404 页面未找到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18324307/

    相关文章:

    apache - 密码保护端口 50070 上的 Hadoop NameNode Web UI

    php - 使用 PHP 即时生成页面

    .htaccess - 使用 .htaccess 强制下载文件

    wordpress - 如何为托管在 Google Cloud Platform 实例中的 Wordpress 网站安装 SSL 证书?

    php - 在 CMB2 选项中添加帖子类别

    php - 需要对同一个表上的多个连接的 SQL 查询执行数学运算

    php - 在缓存的 css 中调用会使 ssl 证书发出安全警告

    php - 如何使用 CodeIgniter 组织站点?

    javascript - Firefox 增强的隐私保护正在阻止将数据层推送到谷歌标签管理器

    html - 如何在所有设备上将所有按钮排成一行? (不更改文本)