WordPress

security — Czy mogę zmienić nazwę folderu wp-admin?

  • 11 sierpnia, 2010
  • 5 min read
security — Czy mogę zmienić nazwę folderu wp-admin?


Ludzie wciąż zadają to pytanie, ale wciąż oznaczają je jako duplikat. Jednak wybrana odpowiedź na to pytanie tak naprawdę nie jest odpowiedzią na pytanie.

Aby zmienić nazwę administratora wordpress, musisz wykonać dwa kroki.

W poniższym kodzie używam pulpitu nawigacyjnego jako nazwy mojego nowego administratora wp. Zmień pulpit nawigacyjny w poniższym kodzie na cokolwiek chcesz nazwać nowego administratora.

Najpierw musisz powiedzieć wordpressowi, że chcesz zmienić adres URL administratora.

W linii 2558 wp-includes/link-template.php to kod określający adres URL administratora.

Używając admin_url filter możesz z powodzeniem zmienić adres URL administratora za pomocą następującej funkcji:

function my_custom_admin_url($path) { 
    return str_replace('wp-admin', 'dashboard', $path); 
}
add_filter('admin_url', 'my_custom_admin_url');

Możesz sprawdzić, jaki jest twój nowy adres URL, wykonując następujące czynności:

function whats_my_admin_url() {
    $url = admin_url();
    echo '<pre><code>'; print_r( $url ); echo '</code></pre>';
    }
add_action( 'admin_notices', 'whats_my_admin_url' );

Jeśli jednak zauważysz, klikając przez administratora, że ​​nie wszystko działa, a niektóre linki mogą dać ci 404 nie znaleziono lub coś podobnego.

Po drugie, zmień .htaccess w katalogu głównym wordpress i dodaj następujące elementy na początku, zanim cokolwiek innego.

#CUSTOM ADMIN URL REWRITE
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dashboard[^/]*$ dashboard/ [R=301,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^dashboard(.*)$ wp-admin$1? [QSA,L,NE]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/?$ / [NE,R=404,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/(.*)$ dashboard/$1 [QSA,R=301,L,NE]
</IfModule>
#CUSTOM ADMIN URL REWRITE

Teraz nie jestem ekspertem, jeśli chodzi o edycję .htaccess, więc niektóre z nich mogą nie być konieczne. Jednak nigdy nie stwierdziłem, że to nie działa.

Warto przeczytać!  php — WPML post_joins na przetłumaczonych elementach

Oto całość. Utwórz plik i upuść go w folderze wtyczek lub w folderze mu-plugins. (pamiętaj, aby zmienić każdą instancję pulpitu nawigacyjnego na preferowany adres URL administratora)

<?php
/**
 * Plugin Name: Change My Admin URL
 * Plugin URI: 
 * Description: Changes the admin url where wp-admin becomes dashboard (or whatever you change it to)
 * Version: 1.0
 * Author: Bryan Willis
 * Author URI: 
 * License: GPL2
 */

/* 

#CUSTOM ADMIN URL REWRITE FOR HTACCESS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dashboard[^/]*$ dashboard/ [R=301,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^dashboard(.*)$ wp-admin$1? [QSA,L,NE]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/?$ / [NE,R=404,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/(.*)$ dashboard/$1 [QSA,R=301,L,NE]
</IfModule>
#CUSTOM ADMIN URL REWRITE

*/

function my_custom_admin_url($path) { 
    return str_replace('wp-admin', 'dashboard', $path); 
}
add_filter('admin_url', 'my_custom_admin_url');

Kwestie?

Nie miałem żadnego od ponad roku przy użyciu tej metody. Możesz zauważyć, że wp-admin nadal będzie działać, co jest do bani, ale jest to bardziej środek ostrożności niż cokolwiek innego. Miałem kilka źle napisanych wtyczek, które zakodowały wp-admin na stałe w niektórych miejscach, które nie ładowały się podczas próby zablokowania lub przekierowania wp-admin. Jestem pewien, że istnieje sposób, aby to zrobić za pomocą htaccess, ale nie udało mi się tego rozgryźć. Ponadto nie było to testowane na wielu serwerach ani na niczym podobnym.

Warto przeczytać!  php — Jak mogę wyświetlić zawartość Divi wewnątrz modalu na podstawie żądania AJAX

Aktualizacja: podejście alternatywne

Jest to dość podobne, ale z jakiegoś powodu moja powyższa odpowiedź nie działała na każdym hoście, którego próbowałem.

Dodać do .htaccess

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

Utwórz plik w folderze mu-plugins o nazwie new-admin.php i dodaj to tam:

<?php
define('WP_ADMIN_DIR', 'admin');
defined('SITECOOKIEPATH') || define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl') . " ) );
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);

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);
}

Notatka: To podejście wydawało się działać lepiej na niektórych hostach, ale nadal występował problem z nieprzekierowywaniem linków wp-admin do nowego adresu URL administratora. Oto podejście, które wypróbowałem poniżej. Chwila to poniżej nie działa Myślę, że jest na dobrej drodze. Nie jestem do końca pewien, jakiego haka użyć. htaccess może być lepszą alternatywą, ale ciągle otrzymywałem pętle przekierowań, gdy próbowałem w ten sposób.

add_action('init', 'redirect_wp_admin_url_to_404');
function redirect_wp_admin_url_to_404(){
  $redirect_to = $_SERVER['REQUEST_URI'];
  if(count($_REQUEST)> 0 && array_key_exists('redirect_to', $_REQUEST)){
    $redirect_to = $_REQUEST['redirect_to'];
    $check_wp_admin = stristr($redirect_to, 'wp-admin');
    if($check_wp_admin){
      wp_safe_redirect( '404.php' );
    }
  }
}


Źródło