Posso rinominare la cartella wp-admin?
È possibile rinominare la cartella wp-admin?
So che potrei semplicemente rinominarla, ma a meno che non sia supportato dal codice molte funzionalità si romperebbero.
Se uso un nome di cartella personalizzato, renderà il sito leggermente più sicuro, seguendo il principio della sicurezza tramite oscuramento.
Sfortunatamente, al momento non è possibile né sembra esserci la volontà di considerarlo come una modifica, come puoi vedere da questo recente thread sulla lista wp-hackers e da questo ticket su trac.
Se davvero desideri che questa questione venga riesaminata, ti suggerirei:
Presenta il tuo caso su wp-hackers, ma sii avvisato che il tuo caso d'uso dovrebbe essere valido e non basato su "sicurezza per oscuramento", altrimenti verrà respinto come sopra.
Presenta la tua argomentazione in un ticket su trac con le stesse avvertenze.
Ancora meglio, carica una patch su trac che abiliti la funzionalità desiderata. È molto più difficile dire di no quando il lavoro è già stato fatto (ma ovviamente, hanno la tendenza a dire "no" molto più spesso di quanto dicano "sì", quindi sii avvisato).

+1
tendono a dire "no" molto più spesso che "sì", quindi siate avvertiti :)

Considerando che questa è la risposta accettata a una domanda che molti di noi si pongono, anche se sono un principiante di WordPress, vorrei aggiungere che sembrano esistere plugin che permettono di rinominare wp-admin e wp-login.php...

i plugin non rinominano wp-login.php
, piuttosto creano nuove pagine di login e fanno sì che WordPress le utilizzi tramite filtri, il file wp-login.php
rimane comunque presente. Non esistono plugin per spostare wp-admin
dato che è hardcodato praticamente ovunque, anche se sono comuni dei collegamenti che reindirizzano lì e alcuni sono inclusi persino nel core ( /admin
e /login
)

Le persone continuano a fare questa domanda, ma viene spesso marcata come duplicata. La risposta scelta però non risponde realmente alla domanda.
Per rinominare l'admin di WordPress è necessario seguire due passaggi.
Nel codice seguente utilizzo "dashboard" come nome del nuovo wp-admin. Sostituisci "dashboard" nel codice con il nome che vuoi dare al tuo nuovo admin.
Primo: devi dire a WordPress che vuoi cambiare l'URL dell'admin.
Sulla riga 2558 di wp-includes/link-template.php si trova il codice che determina l'URL dell'admin.
Utilizzando il filtro admin_url
puoi modificare con successo l'URL dell'admin con la seguente funzione:
function my_custom_admin_url($path) {
return str_replace('wp-admin', 'dashboard', $path);
}
add_filter('admin_url', 'my_custom_admin_url');
Puoi testare il tuo nuovo URL con questo codice:
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' );
Tuttavia, navigando nell'admin noterai che non tutto funziona e alcuni link potrebbero restituire errori 404 o simili.
Secondo: modifica il file .htaccess nella root di WordPress aggiungendo queste regole all'inizio prima di qualsiasi altra cosa.
#REWRITE PER URL ADMIN PERSONALIZZATO
<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>
#REWRITE PER URL ADMIN PERSONALIZZATO
Non sono un esperto nella modifica di .htaccess, quindi alcune regole potrebbero essere non necessarie. Tuttavia, questa configurazione ha sempre funzionato per me.
Ecco il codice completo. Crea un file e inseriscilo nella cartella dei plugin o mu-plugins (ricordati di cambiare tutte le occorrenze di "dashboard" con il tuo URL admin preferito).
<?php
/**
* Plugin Name: Change My Admin URL
* Plugin URI: http://wordpress.stackexchange.com/questions/106/can-i-rename-the-wp-admin-folder
* Description: Cambia l'URL dell'admin sostituendo wp-admin con dashboard (o qualsiasi altro nome)
* Version: 1.0
* Author: Bryan Willis
* Author URI: http://profiles.wordpress.org/codecandid
* License: GPL2
*/
/*
#REWRITE PER URL ADMIN PERSONALIZZATO IN 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>
#REWRITE PER URL ADMIN PERSONALIZZATO
*/
function my_custom_admin_url($path) {
return str_replace('wp-admin', 'dashboard', $path);
}
add_filter('admin_url', 'my_custom_admin_url');
Problemi?
Non ne ho riscontrati in oltre un anno di utilizzo. Potresti notare che wp-admin continua a funzionare, il che è fastidioso, ma è più una precauzione. Alcuni plugin mal scritti hardcodano wp-admin in alcuni punti e non si caricano se si blocca o reindirizza wp-admin. Sono sicuro che esista un modo per farlo via htaccess, ma non l'ho ancora capito. Inoltre, questo metodo non è stato testato su multisite.
Aggiornamento: Approccio Alternativo
Questa soluzione è simile, ma per qualche motivo la precedente non funzionava su tutti gli host.
Aggiungi a .htaccess
RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]
Crea un file nella cartella mu-plugins chiamato new-admin.php
e aggiungi questo codice:
<?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);
}
Nota: Questo approccio sembrava funzionare meglio su alcuni host, ma aveva ancora il problema di non reindirizzare i link wp-admin al nuovo URL. Ecco un tentativo che ho fatto (che non funziona) ma penso sia sulla strada giusta. Non sono sicuro su quale hook usare. Forse htaccess sarebbe migliore, ma ottenevo loop di redirect quando provavo in quel modo.
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' );
}
}
}

Esiste un approccio simile scritto in una classe qui: http://wordpress.stackexchange.com/a/7832/76440

Grazie per aver segnalato quella risposta @makick! È una risposta eccellente e in realtà è da lì che ho preso alcune idee, ma non sembrava funzionare per me in molti casi, ed è qui che sono intervenuti i miei cambiamenti. L'unica cosa che sto ancora cercando di capire è come reindirizzare tutti i link wp-admin che vengono digitati manualmente nell'URL. Non riesco proprio a trovare una soluzione. Se hai tempo, prova la mia risposta aggiornata in fondo usando il filtro site_url
invece di admin_url
. Sembra funzionare piuttosto bene.

E nella migliore delle ipotesi è una scusa pigra per non cambiare cattive pratiche di programmazione come l'uso di numeri o stringhe "magiche" hardcoded.

@hakre +100
A proposito, la maggior parte delle persone che chiedono come nascondere le cartelle "wp-*" non cercano necessariamente sicurezza, ma piuttosto oscurità... cercano di rendere l'analisi dei loro siti un'attività più dispendiosa.

In realtà, non è sicurezza attraverso l'oscurità. È un URL oscuro, una valida tecnica di sicurezza. Vedi la risposta qui sotto per i dettagli.

Beh, ho provato a seguire con una nuova serie di argomenti, ma la risposta è stata: "Questa è una forte decisione di non correggere secondo me" e il piuttosto arrogante "nemmeno il login di gmail è un URL oscuro". Nessuna ragione tecnica, nessuna spiegazione, nessun dibattito, semplicemente non lo faranno.

WordPress è molto più venerabile di Gmail. Un motivo è che WordPress è open-source. Tutti conoscono il codice. La sicurezza attraverso l'oscurità non è comunque vera sicurezza? Ma noi non siamo i programmatori di WordPress. È open-source. Secondo me, l'oscurità aiuta a rendere più sicuro. Perché la gente usa password cifrate allora? Secondo questa logica, non c'è alcuna utilità nell'encryption delle password... Perché se il database è visibile, gli hacker possono fare qualsiasi cosa... Il mio WordPress è stato violato 2 volte e 2 volte il WordPress della mia azienda in 10 anni... E nessuno dei miei 6-7 account Gmail è stato violato in 15 anni finora...

Quello che si chiede non è "sicurezza attraverso l'oscurità" – è sicurezza E oscurità. Anche una banca con la cassaforte migliore al mondo non la renderebbe direttamente accessibile dalla strada. Cambiare il nome della directory rende molto più difficili gli attacchi automatizzati.

Un approccio ufficialmente supportato da WordPress consiste nello spostare i file di installazione di WordPress in una sottodirectory, mantenendo il sito nella radice, in questo modo:
URL del sito: http://my-blog.com
URL di amministrazione: http://my-blog.com/7nxnkkugrdzm/wp-admin
Anche se questo non ti dà la completa libertà di modificare l'URL di amministrazione, significa che puoi aggiungere un prefisso a tuo piacimento. Dal punto di vista della sicurezza, è altrettanto efficace. Inoltre, ha il vantaggio di spostare tutti i file di installazione di WordPress in una posizione sconosciuta agli utenti, quindi dovrebbe far parte di qualsiasi strategia di protezione di WordPress.
Dal WordPress Codex: Assegnare a WordPress la sua propria directory
Inoltre, nota che anche se questo schema di sicurezza è chiamato URL oscuro, non è la stessa cosa della sicurezza per oscuramento. L'URL oscuro è uno schema di sicurezza perfettamente valido che è efficace quanto una password, mentre la sicurezza per oscuramento si basa sull'uso di procedure segrete non verificate.
Valgono però le stesse avvertenze delle password: chiama la cartella personalizzata con un nome come 7nxnkkugrdzm
, non happy-snappy-admin
. Inoltre, assicurati che i tuoi utenti siano consapevoli che l'URL di amministrazione è un segreto.

C'è un ottimo tutorial su questo argomento qui:
Come Nascondere le Informazioni di WordPress dal Codice Sorgente mirror
Include come rinominare wp-content, rinominare wp-admin e rimuovere il tag generator da WordPress.
Questo tutorial modificherà le evidenze ovvie o gli indizi nel tuo codice sorgente, rimuovendo efficacemente le informazioni di WordPress dal tuo sito.
Spiega come cambiare il nome della cartella, l'url di accesso a wp-admin e assicurarsi che login.php reindirizzi al sito principale in modo che le persone possano accedervi direttamente.

Se vuoi impedire agli utenti con livello di sottoscrittore di vedere la directory wp-admin, puoi creare versioni autonome delle pagine di login/registrazione e profilo/modifica nelle loro proprie directory. Poi, puoi proteggere la tua cartella admin tramite htaccess o restrizione IP. (Anche se se fai questo, dovresti fare un'eccezione per il file admin-ajax, poiché alcuni plugin lo utilizzano per aggiungere, ehm, funzionalità AJAX).
Questo approccio ti dà l'"oscurità" che desideri (che in realtà non fa molto, ma spesso fa sentire meglio clienti e manager), e aggiunge anche un po' di sicurezza reale limitando l'accesso all'admin. Inoltre, onestamente, un URL che dice semplicemente "/login" sembra molto più bello di "wp-login.php".
Dovrebbe essere scontato che questo non rende il tuo sito a prova di proiettile. Ma è un bel miglioramento di base.

Un modo per proteggere il pannello di controllo amministrativo è utilizzare le regole .htaccess. Basta aggiungere un file .htaccess alla radice della directory wp-admin. Dopo aver aggiunto il file, inserisci la seguente regola per negare tutti gli indirizzi IP e consentire solo il tuo IP:
http://wp.tutsplus.com/tutorials/10-steps-to-securing-your-wordpress-installation/
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Controllo Accesso Admin WordPress"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
whitelist address
allow from <INSERISCI QUI IL TUO INDIRIZZO IP>
</LIMIT>

Se desideri rinominare la cartella wp-admin con l'obiettivo di aggiungere un ulteriore livello di sicurezza alla tua installazione WordPress, puoi anche provare il Roots / Bedrock WordPress Boilerplate. Può aiutare a isolare la root web per limitare l'accesso ai file non web. Può anche essere utile per organizzare/proteggere l'intero core di WordPress posizionandolo nella sua sottocartella, come rinominare wp-content/ in app/, oltre a queste funzionalità aggiuntive:
- Gestione delle dipendenze con Composer
- Configurazione semplificata di WordPress con file specifici per ambiente
- Variabili d'ambiente con Dotenv
- Autoloader per mu-plugins (utilizza plugin regolari come mu-plugins)
- Sicurezza avanzata (radice web separata e password sicure con wp-password-bcrypt)
Puoi anche consultare il loro repository GitHub per un utilizzo più dettagliato:

Dai un'occhiata a http://wordpress.org/extend/plugins/stealth-login/ potrebbe esserti d'aiuto.

Ho avuto problemi con quel plugin quando l'ho provato. E attualmente non sembra essere mantenuto o compatibile con WP 3.x

ah... peccato, non l'ho controllato, l'ho disinstallato tempo fa. Ma hey... forse qualcuno può sistemarlo se c'è un reale bisogno.

come alternativa, dai un'occhiata a http://wordpress.stackexchange.com/questions/4037/how-to-redirect-rewrite-all-wp-login-requests

Non è possibile rinominare la cartella wp-admin con alcun tipo di codice o hack tramite htaccess,
In passato ho fatto la stessa cosa per un cliente eseguendo una ricerca completa delle cartelle tramite Coda (l'editor che uso) per i tag "wp-admin, wp-content...etc" e ho rimosso il prefisso "wp-" dai file.
Dopo di che sarai in grado di installarlo ma:
Dovrai fare lo stesso con i plugin che vuoi installare,
Dovrai aggiornare il core manualmente rimuovendo il tag "wp-" dalle nuove versioni.
In ogni caso non ti consiglio di fare una cosa del genere, lascia tutto com'è e cerca piuttosto di implementare una pagina di Login/Registrazione/Profilo utente per offrire un'esperienza migliore ai tuoi utenti/clienti.
Cristian di Cozmolabs ha scritto un ottimo tutorial. Puoi modificare leggermente il codice e farlo funzionare con qualsiasi tema WordPress.
Puoi anche aggiungere un modulo per gli articoli direttamente dal frontend così che l'Amministratore e gli utenti con i permessi necessari possano scrivere articoli senza accedere al backend.
Qui puoi vedere un esempio e il codice per creare una pagina di pubblicazione articoli dal frontend. Front-End Post Submission
Puoi anche dare un'occhiata a qualche plugin qui che fa la stessa cosa con più funzionalità.

E SE LAVORASSIMO CON WP-ADMIN DALL'INTERNO DI UN IFRAME?
Crea una nuova pagina nella dashboard di WordPress chiamata "Admin". Esempio: tuodominio/admin/
Puoi utilizzare uno statement condizionale nei file header.php
, page.php
e/o footer.php
per disabilitare gli elementi del template non necessari, usando:
<?php
if(!is_page('admin')): //se non è la pagina admin
//avvolgi il codice non necessario o indesiderato
else: ?>
<style type="text/css">
.responsive-iframe {
position: relative;
padding-bottom: 56.25%; /*16:9*/
height: 0;
overflow: hidden;
iframe {
position: absolute;
top:0;
left: 0;
width: 100%; //o 100vw
height: 100%; //o 100vh
}
}
</style>
<div class="responsive-iframe">
<iframe seamless="seamless" scrolling="yes" src="http://tuodominio/wp-admin/" frameborder="0" allowfullscreen></iframe>
</div>
<?php
endif;
Questa soluzione non è elegante, ma almeno in parte permette di nascondere wp-admin dall'URL. Un altro metodo possibile è utilizzare il forwarding di dominio con mascheramento dell'URL abilitato.

Io stesso elimino il file wp-login.php e lo carico via FTP prima di voler accedere, per poi eliminarlo nuovamente fino alla prossima volta Ma altrimenti direi
- Il plugin Wordfence aiuterà molto a bloccare i tentativi di hacking umani. Usa un nome utente molto lungo e complesso per l'account admin (gli hacker e i bot non si aspettano che gli umani usino nomi utente lunghi, solo password), uno che nemmeno tu riesci a ricordare, e accedi utilizzando l'indirizzo email che hai usato invece, è anche un'ottima mossa.
- Elimina il contenuto del file comments.php e non permettere mai commenti sul tuo sito web, né iscrizioni, è la scelta migliore, limitando l'accesso solo agli amministratori e, se necessario, ai tuoi autori e editori. Eliminare il contenuto di comments.php previene molti malware iniettati e hack.
- Metti uno spazio tra due parole come nome di login, poiché la maggior parte degli hacker non si rende conto che puoi usare un nome utente con uno spazio vuoto, e spesso usano underscore anche quando indovinano il tuo nome utente (hacker umani che usano ingegneria sociale). Le password lunghe e complesse si sono rivelate non essere più sicure di una password di 8 caratteri/numeri, quindi sta a te studiare.
- Ultimo ma non meno importante, non bisogna solo proteggere login.php (tra l'altro non usare mai il nome utente "[login]"), ma anche il file xml rpc che è l'altro file che gli hacker amano usare per provare ad accedere. Di solito questo tipo di attacco è portato avanti da un delinquente di basso livello con poca conoscenza del vero hacking che usa l'AI per fare il lavoro, e sta solo tentando la fortuna. Ma meglio prevenire che curare. Inoltre, il plugin WP all in one Migration ti permette di scaricare l'intero sito con database e configurazione e caricarlo nuovamente in caso di hacking e cancellazione del sito. Un backup giornaliero prima di andare a dormire garantirebbe che il tuo sito sia sempre come era prima di coricarti. Backup offline su hard drive (esterno), e sarai sempre al sicuro. Oh, e mantieni i plugin al minimo poiché spesso vengono lasciati marcire dagli sviluppatori e non aggiornati, e se il tuo blog ha usato il plugin (ad esempio plugin per playlist YouTube) per pubblicare, eliminare un plugin obsoleto renderà molti post privi di senso con contenuti mancanti (pensa sempre in anticipo). Ma usa i plugin necessari come akismet, wordfence free e wp all in one migration tool per il backup di file, contenuti e database del sito. Molti plugin hanno anche vulnerabilità e un rapido sniff del tuo server mostrerà tutte le cartelle all'hacker, che saprà che hai il plugin e attaccherà attraverso quello. Non usare nemmeno Discus o altri moduli di commento di terze parti, poiché ci sono più dati che vengono rubati e compromessi attraverso inception di quarte parti (YouTube attualmente hackerato utilizzando il tagging della posizione nelle app), di quanto sia utile. Meglio avere una pagina Facebook e far commentare le persone lì, ma non inserire widget o codice che collega da o verso altri domini, e le loro API troppo, poiché i dati comunicati e condivisi vengono intercettati facilmente da hacker professionisti. Non ho commenti o pulsanti di condivisione sui miei siti WordPress per questo motivo. (me la cavo bene e vivo bene senza bisogno di commenti con il tipo di siti web che ho). Ad esempio, se questa domanda fosse sotto forma di un video YouTube, tutti avrebbero abbandonato WordPress su stackexchange (non che lo suggerisca, stack exchange è fantastico!) e commentato sul loro canale YouTube invece. Più sicuro, più sicuro. Quindi crea un canale YT e una pagina FB e usali per permettere alle persone di 'iscriversi e commentare' e mantieni il sito WordPress il più essenziale possibile senza opzioni di login
