it-swarm.com.de

Ändern Sie die Wordpress-Admin-URL

Ich habe meine Wordpress-Verzeichnisstruktur ziemlich verändert. Folgendes habe ich:

define('WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/wordpress');
define('WP_HOME',    'http://' . $_SERVER['SERVER_NAME']);
define('WP_CONTENT_DIR', dirname(__FILE__) . '/content');
define('WP_CONTENT_URL', 'http://' . $_SERVER['SERVER_NAME'] . '/content');

Ich habe also ein Verzeichnis content , das meine Plugins und Themes enthält. Und dann habe ich ein Verzeichnis wordpress , das die Kerndateien WP enthält, abzüglich des Ordners "wp-content".

Mit dieser neuen Struktur muss ich auf das WP - Backend mit dieser URL zugreifen: http://site.dev/wordpress/wp-admin 

Gibt es eine Möglichkeit, wie ich es ändern kann, so kann ich einfach so darauf zugreifen: http://site.dev/wp-admin

Ich möchte nicht, dass WordPress in der URL enthalten ist. Wäre dies ein htaccess-Update, das ich vornehmen muss, oder gibt es eine Einstellung, die ich in meiner Datei wp-config.php verwenden kann?

10
Drew

Hier ist ein Artikel von der WordPress-Site.

http://wordpress.org/support/topic/how-to-change-the-admin-url-or-wp-admin-to-secure-login

  1. Fügen Sie Konstante zu wp-config.php hinzu 

    define('WP_ADMIN_DIR', 'secret-folder');  
    define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);  
    
  2. Fügen Sie unten den Filter zu functions.php hinzu

    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);  
    }
    
  3. Fügen Sie der .htaccess-Datei die folgende Zeile hinzu

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

Ich habe damit herumgespielt und es gibt einen viel einfacheren Weg, dies alles in dieser einen einfachen Funktion zu tun, ohne sich mit irgendetwas anderem herumzumachen (unnötige Ordner erstellen, Weiterleitungen, Seiten usw.). 

// Simple Query String Login page protection
function example_simple_query_string_protection_for_login_page() {

$QS = '?mySecretString=foobar';
$theRequest = 'http://' . $_SERVER['SERVER_NAME'] . '/' . 'wp-login.php' . '?'. $_SERVER['QUERY_STRING'];

// these are for testing
// echo $theRequest . '<br>';
// echo site_url('/wp-login.php').$QS.'<br>';   

    if ( site_url('/wp-login.php').$QS == $theRequest ) {
        echo 'Query string matches';
    } else {
        header( 'Location: http://' . $_SERVER['SERVER_NAME'] . '/' );
    }
}
add_action('login_head', 'example_simple_query_string_protection_for_login_page');
3
Abu fateh

Dies ist ein sehr hilfreiches Thema. Ich habe ein paar kleine Korrekturen an der Funktion vorgenommen und das ist meine Version:

add_filter('site_url',  'wpadmin_filter', 10, 3);

 function wpadmin_filter( $url, $path, $orig_scheme ) {
    $request_url = $_SERVER['REQUEST_URI'];

    $check_wp_admin = stristr($request_url, 'wp-admin');
    if($check_wp_admin){
        wp_redirect( home_url( '404' ), 302 );
        exit();
    }

    $old  = array( "/(wp-admin)/");
    $admin_dir = WP_ADMIN_DIR;
    $new  = array($admin_dir);
    return preg_replace( $old, $new, $url, 1);
 }

Hauptsächlich für die Umleitung von wp-admin.

Und der wichtigste Teil:

add_rewrite_rule( '^' . 'backend/(.*)','wp-admin/$1?%{QUERY_STRING}' );

So aktualisieren Sie die .htaccess-Regel.

2
OneByte

Alles, was ich tat, war /wp-admin Ordner (innerhalb von public_html/wordpress) in public_html verschoben. Ich überprüfte, ob es funktionieren würde, indem ich meinen WordPress-Ordner umbenannte (ich habe wordpress_test verwendet, Sie können alles verwenden) und ging auf meine Website example.com/wp-admin - es hat genauso funktioniert, als wenn ich zu example.com/wordpress/wp-admin gegangen wäre. 

Das einzige, was ziemlich knifflig ist, ist, den wp-admin in etwas anderes zu ändern, da WP den wp-admin in zahlreichen Dateien codiert hat. Das bloße Ändern des Namens führt zu PHP- und anderen Fehlern. Ein einfaches Plugin finde ich leicht zu beheben. 

Hinweis : Ich musste dafür keine Codierung vornehmen. Ich musste den Code für wp-admin ändern, da das Plugin nicht das tat, was ich wollte.

1
Nicholas

Es gibt einen anderen Weg, um eine bessere Taktik für Ihren gesicherten WP-Administrator sicherzustellen.

Sowohl mit dem eigenen WP-Admin-Namen als auch mit "Workersneeded /"

Ich habe es auf einer meiner Sites gemacht, und es endete mit einem Wunder, bei dem die getestete SSL-Site von verschiedenen geografischen Standorten zu meiner Site unterschiedlich war.

Sie müssen ein Tool namens Notepad ++ herunterladen: https://notepad-plus-plus.org/download/

Es sei denn, Sie werden an jeder Datei im Verzeichnis viel Arbeit verrichten.

Danach müssen Sie das WordPress in einen Ordner extrahieren.

Bearbeiten Sie anschließend alle Dateien im Verzeichnis, während Sie nach "wp-admin ..__" suchen. Ersetzen Sie dann alle Dateien durch Ihren Namen: "workerneeded" oder Ihren eigenen Namen.

Geben Sie wie in Notepad "Suche in Dateien" ein, um "Was finden" zu suchen: wp-admin /

Und in "Ersetzen mit": Arbeiter brauchten /

Ersetzen Sie dann alle Dateien.

Sie müssen auch diese Zeile in die wp-config.php einfügen, um alle Probleme zu überwachen:

ini_set('log_errors',TRUE);
ini_set('error_reporting', E_ALL);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');

Nachdem Sie die meisten im WordPress-Verzeichnis überschrieben haben und Ihr WP-Administrator jetzt den Namen "workerneeded" hat, werden Sie höchstwahrscheinlich leichte Probleme mit einigen Ihrer WordPress-Plugins oder -Designs haben.

Deshalb müssen Sie sie in der Datei error_log.txt anmelden.

Nachdem Sie die Fehler in der Datei gefunden haben. Sie werden höchstwahrscheinlich die .php-Datei bearbeiten müssen, die immer noch versucht, eine Verbindung zu wp-admin herzustellen. Auf diese Weise können Sie die Dateiinformationen von wp-admin in Ihrem Verwaltungsordner ersetzen.

Sie können Ihre Plugins erneut herunterladen und dasselbe Verfahren wie oben durch Notepad ++ ersetzen. Auf diese Weise können Sie alle Plugins mit dem neuen Ordnernamen verfügbar machen.

Laden Sie dann den Ordner jedes Plugins mit dem WP-Datei-Manager-Plugin in Ihr WP-Inhaltsverzeichnis hoch.

Beachten Sie, dass WordPress nicht automatisch aktualisiert oder aktualisiert werden kann, auch nicht, wenn Sie WordPress neu installieren. Sie müssen diese Ersetzungen jedes Mal vornehmen.

Dies wurde mit der Version 4.9.8 von WordPress sowie mit der neuesten Version 5.0.3 durchgeführt

Mit 5.0.3 erhalten Sie mehr Fehler in der Datei error_log.txt. Unbekanntes warum.

0
Dealazer

Endlich eine Möglichkeit gefunden, dies ohne Plugin zu tun UND OHNE ÄNDERUNG WP CORE ( Alle Tutorials schlagen vor, dies aus irgendeinem seltsamen Grund zu tun.

1- Kopieren Sie wp-login.php Und benennen Sie es in new-secret-url.php Um (in Ihrem Stammverzeichnis)

2- Öffnen Sie die Datei new-secret-url.php Und führen Sie ein Suchen/Ersetzen von wp-login.php In new-secret-url.php Durch.

3- Fügen Sie den folgenden Code zu Ihrer functions.php hinzu:

/** Hide default login */
add_action( 'init', 'marounmelhem_hide_login' );
function marounmelhem_hide_login() {

    //Only proceed for guests
    if ( ! is_user_logged_in() ) {

        //Getting current page
        $current_url   = str_replace( '/', '', $_SERVER['REQUEST_URI'] );
        $hiddenWpAdmin = 'new-secret-url'; //Change this to your new secret wp-admin url
        $redirectNaTo  = '/';

        //Checking if accessing correct login url
        if ( $current_url == $hiddenWpAdmin ) {
            wp_redirect( '/'.$hiddenWpAdmin.'.php' );
            exit;
        }

        //Only allow requests to wp-login.php coming from correct login url
        $adminToCheck = [
            'wp-admin',
            'wp-login.php'
        ];
        if (
            in_array( $current_url, $adminToCheck )
            &&
            $_GET['action'] !== "logout"
        ) {
            wp_redirect( $redirectNaTo );
            exit();
        }
    }
}

4- Dies funktioniert nur, wenn Sie keine anderen Frontend-Anmeldeformulare verwenden. In diesem Fall können Sie Folgendes ändern:

is_user_logged_in() bis möglicherweise !current_user_can( 'subscriber' ) (oder die in der Frontend-Anmeldelogik angegebene Rolle)

5- Sie sind sich nicht sicher, ob Ajax-Anrufe mit den oben genannten Funktionen funktionieren. Lassen Sie es mich wissen, wenn Sie es versucht haben

0
Maroun Melhem