简体   繁体   English

重命名 WordPress 管理 URL wp-admin

[英]Rename WordPress admin URL wp-admin

I want to rename the admin URL 'wp-admin' to eg 'admin'.我想将管理 URL 'wp-admin' 重命名为例如 'admin'。 I set a rewrite rule in the .htaccess to acces the admin login: RewriteRule ^admin wp-admin [NC,L]我在 .htaccess 中设置了重写规则以访问管理员登录: RewriteRule ^admin wp-admin [NC,L]

That works but I can still use /wp-admin.那行得通,但我仍然可以使用 /wp-admin。 So I have to tell Wordpress that 'admin' is the new URL.所以我必须告诉 Wordpress 'admin' 是新的 URL。

Can anyone help?任何人都可以帮忙吗?

This is better way you install security plugin.这是安装安全插件的更好方式。 below is the url of security plugin .下面是安全插件的网址。

https://wordpress.org/plugins/better-wp-security/

if you don't want to use plugin .如果你不想使用 plugin 。 so there is link where you see 5 easy step to change wp-admin.所以有一个链接,您可以在其中看到更改 wp-admin 的 5 个简单步骤。

https://w3reign.com/how-to-change-wp-admin-url-in-wordpress-without-plugin/

I know this is an old post but there is a simple solution for that.我知道这是一篇旧帖子,但有一个简单的解决方案。 It could be helpful for a lot of people.它可能对很多人有帮助。

You can use a plugin named Move Login .您可以使用名为Move Login的插件。

If you don't want to install a plugin for that, you can look rules in the .htaccess file.如果您不想为此安装插件,您可以在 .htaccess 文件中查看规则。

Solution without plugins:没有插件的解决方案:

Edit the .htaccess and add the code below between the IfModule mod_rewrite.c tags:编辑 .htaccess 并在IfModule mod_rewrite.c标签之间添加以下代码:

RewriteRule ^admin$ /wp-login.php [NC,L] 
RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]

Also edit the wp-config.php and add:同时编辑 wp-config.php 并添加:

define('WP_ADMIN_DIR', 'admin');
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);

Edit the functions.php file from your theme and add:从您的主题编辑 functions.php 文件并添加:

add_filter('site_url',  'wpadmin_filter', 10, 3);
function wpadmin_filter( $url, $path, $orig_scheme ) {
   $old  = array( "/(wp-admin)/");
   $admin_dir = WP_ADMIN_DIR;
   $new  = array($admin_dir);
   return preg_replace( $old, $new, $url, 1);
}

And that's it!就是这样! Enjoy享受

<?php

/*
Plugin Name: Custom Admin Secure Login 
Description: Change admin url link.
*/

if ( defined( 'ABSPATH' )
    && ! class_exists( 'Secure_Login' ) ) {

    class Secure_Login {

        private $wp_login_php;

        private function basename() {

            return plugin_basename( __FILE__ );

        }

        private function path() {

            return trailingslashit( dirname( __FILE__ ) );

        }

        private function use_trailing_slashes() {

            return ( '/' === substr( get_option( 'permalink_structure' ), -1, 1 ) );

        }

        private function user_trailingslashit( $string ) {

            return $this->use_trailing_slashes()
                ? trailingslashit( $string )
                : untrailingslashit( $string );

        }

        private function wp_template_loader() {

            global $pagenow;

            $pagenow = 'index.php';

            if ( ! defined( 'WP_USE_THEMES' ) ) {

                define( 'WP_USE_THEMES', true );

            }

            wp();

            if ( $_SERVER['REQUEST_URI'] === $this->user_trailingslashit( str_repeat( '-/', 10 ) ) ) {

                $_SERVER['REQUEST_URI'] = $this->user_trailingslashit( '/wp-login-php/' );

            }

            require_once( ABSPATH . WPINC . '/template-loader.php' );

            die;

        }

        private function new_login_slug() {

            if ( ( $slug = get_option( 'rwl_page' ) )
                || ( is_multisite()
                    && is_plugin_active_for_network( $this->basename() )
                    && ( $slug = get_site_option( 'rwl_page', 'login' ) ) )
                || ( $slug = 'login' ) ) {

                return $slug;

            }

        }

        public function new_login_url( $scheme = null ) {

            if ( get_option( 'permalink_structure' ) ) {

                return $this->user_trailingslashit( home_url( '/', $scheme ) . $this->new_login_slug() );

            }

            else {

                return home_url( '/', $scheme ) . '?' . $this->new_login_slug();

            }

        }

        public function __construct() {

            global $wp_version;

            register_activation_hook( $this->basename(), array( $this, 'activate' ) );
            register_uninstall_hook( $this->basename(), array( 'Secure_Login', 'uninstall' ) );

            add_action( 'admin_init', array( $this, 'admin_init' ) );
            add_action( 'admin_notices', array( $this, 'admin_notices' ) );
            add_action( 'network_admin_notices', array( $this, 'admin_notices' ) );

            if ( is_multisite()
                && ! function_exists( 'is_plugin_active_for_network' ) ) {

                require_once( ABSPATH . '/wp-admin/includes/plugin.php' );

            }

            add_filter( 'plugin_action_links_' . $this->basename(), array( $this, 'plugin_action_links' ) );

            if ( is_multisite()
                && is_plugin_active_for_network( $this->basename() ) ) {

                add_filter( 'network_admin_plugin_action_links_' . $this->basename(), array( $this, 'plugin_action_links' ) );

                add_action( 'wpmu_options', array( $this, 'wpmu_options' ) );
                add_action( 'update_wpmu_options', array( $this, 'update_wpmu_options' ) );

            }

            add_action( 'plugins_loaded', array( $this, 'plugins_loaded' ), 1 );
            add_action( 'wp_loaded', array( $this, 'wp_loaded' ) );

            add_filter( 'site_url', array( $this, 'site_url' ), 10, 4 );
            add_filter( 'network_site_url', array( $this, 'network_site_url' ), 10, 3 );
            add_filter( 'wp_redirect', array( $this, 'wp_redirect' ), 10, 2 );

            add_filter( 'site_option_welcome_email', array( $this, 'welcome_email' ) );

            remove_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );

        }

        public function activate() {

            add_option( 'rwl_redirect', '1' );

            delete_option( 'rwl_admin' );

        }

        public static function uninstall() {

            global $wpdb;

            if ( is_multisite() ) {

                $blogs = $wpdb->get_col( "SELECT blog_id FROM {$wpdb->blogs}" );

                    if ( $blogs ) {

                        foreach( $blogs as $blog ) {

                            switch_to_blog( $blog );

                            delete_option( 'rwl_page' );

                        }

                        restore_current_blog();

                    }

                delete_site_option( 'rwl_page' );

            }

            else {

                delete_option( 'rwl_page' );

            }

        }

        public function wpmu_options() {

            $out = '';

            $out .= '<h3>Secure login location</h3>';
            $out .= '<p>This option allows you to set a networkwide default, which can be overridden by individual sites. Simply go to to the site’s permalink settings to change the url.</p>';
            $out .= '<table class="form-table">';
                $out .= '<tr valign="top">';
                    $out .= '<th scope="row">Networkwide default</th>';
                    $out .= '<td><input id="rwl-page-input" type="text" name="rwl_page" value="' . get_site_option( 'rwl_page', 'login' )  . '"></td>';
                $out .= '</tr>';
            $out .= '</table>';

            echo $out;

        }

        public function update_wpmu_options() {

            if ( ( $rwl_page = sanitize_title_with_dashes( $_POST['rwl_page'] ) )
                && strpos( $rwl_page, 'wp-login' ) === false
                && ! in_array( $rwl_page, $this->forbidden_slugs() ) ) {

                update_site_option( 'rwl_page', $rwl_page );

            }

        }

        public function admin_init() {

            global $pagenow;

            add_settings_section(
                'secure-login-section',
                'Admin url change',
                array( $this, 'rwl_section_desc' ),
                'permalink'
            );

            add_settings_field(
                'rwl-page',
                '<label for="rwl-page">Login url</label>',
                array( $this, 'rwl_page_input' ),
                'permalink',
                'secure-login-section'
            );

            if ( isset( $_POST['rwl_page'] )
                && $pagenow === 'options-permalink.php' ) {

                if ( ( $rwl_page = sanitize_title_with_dashes( $_POST['rwl_page'] ) )
                    && strpos( $rwl_page, 'wp-login' ) === false
                    && ! in_array( $rwl_page, $this->forbidden_slugs() ) ) {

                    if ( is_multisite() && $rwl_page === get_site_option( 'rwl_page', 'login' ) ) {

                        delete_option( 'rwl_page' );

                    }

                    else {

                        update_option( 'rwl_page', $rwl_page );

                    }

                }

            }

            if ( get_option( 'rwl_redirect' ) ) {

                delete_option( 'rwl_redirect' );

                if ( is_multisite()
                    && is_super_admin()
                    && is_plugin_active_for_network( $this->basename() ) ) {

                    $redirect = network_admin_url( 'settings.php#rwl-page-input' );

                }

                else {

                    $redirect = admin_url( 'options-permalink.php#rwl-page-input' );

                }

                wp_safe_redirect( $redirect );

                die;

            }

        }

        public function rwl_section_desc() {

            $out = '';

            if ( ! is_multisite()
                || is_super_admin() ) {

                $out .= '';

            }

            if ( is_multisite()
                && is_super_admin()
                && is_plugin_active_for_network( $this->basename() ) ) {

                $out .= '<p>To set a networkwide default, go to <a href="' . network_admin_url( 'settings.php#rwl-page-input' ) . '">Network Settings</a>.</p>';

            }

            echo $out;

        }

        public function rwl_page_input() {

            if ( get_option( 'permalink_structure' ) ) {

                echo '<code>' . trailingslashit( home_url() ) . '</code> <input id="rwl-page-input" type="text" name="rwl_page" value="' . $this->new_login_slug()  . '">' . ( $this->use_trailing_slashes() ? ' <code>/</code>' : '' );

            }

            else {

                echo '<code>' . trailingslashit( home_url() ) . '?</code> <input id="rwl-page-input" type="text" name="rwl_page" value="' . $this->new_login_slug()  . '">';

            }

        }

        public function admin_notices() {

            global $pagenow;

            $out = '';

            if ( ! is_network_admin()
                && $pagenow === 'options-permalink.php'
                && isset( $_GET['settings-updated'] ) ) {

                echo '<div class="updated"><p>Your login page is now here: <strong><a href="' . $this->new_login_url() . '">' . $this->new_login_url() . '</a></strong>. Bookmark this page!</p></div>';

            }

        }

        public function plugin_action_links( $links ) {

            if ( is_network_admin()
                && is_plugin_active_for_network( $this->basename() ) ) {

                array_unshift( $links, '<a href="' . network_admin_url( 'settings.php#rwl-page-input' ) . '">Settings</a>' );

            }

            elseif ( ! is_network_admin() ) {

                array_unshift( $links, '<a href="' . admin_url( 'options-permalink.php#rwl-page-input' ) . '">Settings</a>' );

            }

            return $links;

        }

        public function plugins_loaded() {

            global $pagenow;

            if ( ! is_multisite()
                && ( strpos( $_SERVER['REQUEST_URI'], 'wp-signup' )  !== false
                    || strpos( $_SERVER['REQUEST_URI'], 'wp-activate' ) )  !== false ) {

                wp_die( __( 'This feature is not enabled.' ) );

            }

            $request = parse_url( $_SERVER['REQUEST_URI'] );

            if ( ( strpos( $_SERVER['REQUEST_URI'], 'wp-login.php' ) !== false
                    || untrailingslashit( $request['path'] ) === site_url( 'wp-login', 'relative' ) )
                && ! is_admin() ) {

                $this->wp_login_php = true;

                $_SERVER['REQUEST_URI'] = $this->user_trailingslashit( '/' . str_repeat( '-/', 10 ) );

                $pagenow = 'index.php';

            }

            elseif ( untrailingslashit( $request['path'] ) === home_url( $this->new_login_slug(), 'relative' )
                || ( ! get_option( 'permalink_structure' )
                    && isset( $_GET[$this->new_login_slug()] )
                    && empty( $_GET[$this->new_login_slug()] ) ) ) {

                $pagenow = 'wp-login.php';

            }

        }

        public function wp_loaded() {

            global $pagenow;

            if ( is_admin()
                && ! is_user_logged_in()
                && ! defined( 'DOING_AJAX' ) ) {

                wp_die( __( 'You must log in to access the admin area.' ) );

            }

            $request = parse_url( $_SERVER['REQUEST_URI'] );

            if ( $pagenow === 'wp-login.php'
                && $request['path'] !== $this->user_trailingslashit( $request['path'] )
                && get_option( 'permalink_structure' ) ) {

                wp_safe_redirect( $this->user_trailingslashit( $this->new_login_url() )
                    . ( ! empty( $_SERVER['QUERY_STRING'] ) ? '?' . $_SERVER['QUERY_STRING'] : '' ) );

                die;

            }

            elseif ( $this->wp_login_php ) {

                if ( ( $referer = wp_get_referer() )
                    && strpos( $referer, 'wp-activate.php' ) !== false
                    && ( $referer = parse_url( $referer ) )
                    && ! empty( $referer['query'] ) ) {

                    parse_str( $referer['query'], $referer );

                    if ( ! empty( $referer['key'] )
                        && ( $result = wpmu_activate_signup( $referer['key'] ) )
                        && is_wp_error( $result )
                        && ( $result->get_error_code() === 'already_active'
                            || $result->get_error_code() === 'blog_taken' ) ) {

                        wp_safe_redirect( $this->new_login_url()
                            . ( ! empty( $_SERVER['QUERY_STRING'] ) ? '?' . $_SERVER['QUERY_STRING'] : '' ) );

                        die;

                    }

                }

                $this->wp_template_loader();

            }

            elseif ( $pagenow === 'wp-login.php' ) {

                global $error, $interim_login, $action, $user_login;

                @require_once ABSPATH . 'wp-login.php';

                die;

            }

        }

        public function site_url( $url, $path, $scheme, $blog_id ) {

            return $this->filter_wp_login_php( $url, $scheme );

        }

        public function network_site_url( $url, $path, $scheme ) {

            return $this->filter_wp_login_php( $url, $scheme );

        }

        public function wp_redirect( $location, $status ) {

            return $this->filter_wp_login_php( $location );

        }

        public function filter_wp_login_php( $url, $scheme = null ) {

            if ( strpos( $url, 'wp-login.php' ) !== false ) {

                if ( is_ssl() ) {

                    $scheme = 'https';

                }

                $args = explode( '?', $url );

                if ( isset( $args[1] ) ) {

                    parse_str( $args[1], $args );

                    $url = add_query_arg( $args, $this->new_login_url( $scheme ) );

                }

                else {

                    $url = $this->new_login_url( $scheme );

                }

            }

            return $url;

        }

        public function welcome_email( $value ) {

            return $value = str_replace( 'wp-login.php', trailingslashit( get_site_option( 'rwl_page', 'login' ) ), $value );

        }

        public function forbidden_slugs() {

            $wp = new WP;

            return array_merge( $wp->public_query_vars, $wp->private_query_vars );

        }

    }

    new Secure_Login;

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM