¿Puedo cambiar el nombre de la carpeta wp-admin?

70

¿Es posible cambiar el nombre de la carpeta wp-admin?

Sé que podría cambiarle el nombre, pero a menos que sea compatible con el código, muchas cosas se romperían.

Si uso un nombre de carpeta personalizado, lo hará un poco más seguro, seguridad por oscuridad y todo eso.

Adam Dempsey
fuente

Respuestas:

39

Desafortunadamente, actualmente no es posible ni parece haber voluntad para considerarlo como una modificación, como puede ver en este hilo reciente en la lista de wp-hackers y este ticket en trac .

Si realmente desea ver que esto se revise, le sugiero:

  1. Presente su caso en wp-hackers, pero tenga en cuenta que su caso de uso será mejor y no "seguridad a través de la oscuridad" o será derribado como se indicó anteriormente.

  2. Presente su argumento en un ticket de trac con las mismas advertencias.

  3. Aún mejor, suba un parche a trac que habilite la funcionalidad deseada. Es mucho más difícil decir que no cuando el trabajo ya está hecho (pero, por supuesto, prefieren decir "no" con mucha más frecuencia de lo que dicen "sí", así que tenga cuidado).

MikeSchinkel
fuente
10
+1 prefieren decir "no" con mucha más frecuencia de lo que dicen "sí", así que ten cuidado :)
Sisir
11

No, no puede cambiar el nombre de la carpeta. La ruta está codificada en múltiples ubicaciones a lo largo de la fuente de WordPress.

La seguridad a través de la oscuridad no es realmente seguridad de todos modos.

Viper007Bond
fuente
21
Y es una excusa perezosa en el mejor de los casos para no cambiar las malas prácticas de programación como codificar números mágicos o cadenas.
Hakre
66
@hakre +100 Btw, la mayoría de las personas que preguntan cómo ocultar las carpetas "wp- *" no necesariamente buscan seguridad, en realidad buscan oscuridad ... intentan hacer que el análisis de sus sitios requiera más actividad.
Victor Farazdagi
3
En realidad, no es seguridad por oscuridad. Es una URL oscura, una técnica de seguridad válida. Vea la respuesta a continuación para más detalles.
cmc
1
Bueno, traté de seguir con un nuevo conjunto de argumentos, pero la respuesta fue: "Esta es una solución fuerte por libro" y bastante mocoso "el inicio de sesión de gmail tampoco es una url oscura". Sin razones técnicas, sin explicación, sin debate, simplemente no lo harán.
cmc
1
Wordpress es mucho más venerable que gmail. Una razón es que WordPress es de código abierto. Todos conocen el código. ¿La seguridad a través de la oscuridad no es realmente seguridad de todos modos? Pero no somos codificadores de WordPress. Es de código abierto. En mi opinión, la oscuridad ayuda a hacer seguro. ¿Por qué la gente usa una contraseña encriptada? Según esta lógica, no hay uso de la contraseña de encriptación ... Porque si la base de datos es visible, el hacker puede hacer cualquier cosa ... Mi wordpress es pirateado 2 veces y 2 veces la wordpress de mi empresa en 10 años ... Y ninguno de mis 6-7 cuentas de Gmail se cortó en 15 años hasta ahora ...
web2students.com
11

La gente sigue haciendo esta pregunta, pero la gente sigue marcándola como un duplicado. Sin embargo, la respuesta elegida para esto realmente no es una respuesta a la pregunta.

Para cambiar el nombre del administrador de WordPress, debe seguir dos pasos.

En el siguiente código, estoy usando el tablero como el nombre de mi nuevo wp-admin. Cambie el panel de control en el siguiente código a lo que quiera nombrar a su nuevo administrador.

Primero debe decirle a WordPress que desea cambiar la URL del administrador.

En la línea 2558 wp-includes / link-template.php es el código que determina la url del administrador.

Usando el admin_urlfiltro puede cambiar con éxito la url del administrador con la siguiente función:

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

Puede hacer una prueba para ver cuál es su nueva URL haciendo esto:

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

Sin embargo, si observa al hacer clic en el administrador, no todo funciona y algunos de los enlaces pueden darle 404 no encontrado o algo similar.

En segundo lugar, cambie el .htaccess en su directorio raíz de WordPress y agregue lo siguiente al principio antes que nada.

#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

Ahora, no soy un experto cuando se trata de editar .htaccess, por lo que parte de esto podría no ser necesario. Sin embargo, nunca he encontrado que no funcione.

Aquí está todo el asunto. Cree un archivo y colóquelo en su carpeta de complementos o en la carpeta de complementos mu. (recuerde cambiar cada instancia del tablero a su URL de administrador preferida)

<?php
/**
 * Plugin Name: Change My Admin URL
 * Plugin URI: http://wordpress.stackexchange.com/questions/106/can-i-rename-the-wp-admin-folder
 * Description: Changes the admin url where wp-admin becomes dashboard (or whatever you change it to)
 * Version: 1.0
 * Author: Bryan Willis
 * Author URI: http://profiles.wordpress.org/codecandid
 * 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');

¿Cuestiones?

No he tenido ninguno en más de un año con este método. Puede notar que wp-admin todavía funcionará, que tipo de apesta, pero es más una precaución que otra cosa. Tenía algunos complementos mal escritos que codificaban wp-admin en algunos lugares que no se cargaban al intentar bloquear o redirigir wp-admin. Estoy seguro de que hay una manera de hacer esto con htaccess, pero no lo he descubierto con éxito. Además, esto no se ha probado en sitios múltiples ni nada de eso.

Actualización: enfoque alternativo

Esto es bastante similar, pero por alguna razón mi respuesta anterior no funcionó en todos los hosts que probé.

añadir .htaccess

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

Cree un archivo en la carpeta mu-plugins llamada new-admin.phpy agregue esto allí:

<?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: Este enfoque parecía funcionar mejor en algunos hosts, pero aún tenía el problema de no redirigir los enlaces wp-admin a la nueva URL de administrador. Aquí hay un enfoque que probé a continuación. Si bien esto a continuación no funciona , creo que está en el camino correcto. No estoy totalmente seguro de qué gancho usar. htaccess podría ser una mejor alternativa, pero seguía recibiendo bucles de redireccionamiento cuando lo intentaba de esa manera.

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' );
    }
  }
}
Bryan Willis
fuente
Aquí hay un enfoque similar escrito en una clase: wordpress.stackexchange.com/a/7832/76440
majick
¡Me alegra que hayas señalado esa respuesta @makick! Es una gran respuesta y fue de donde obtuve algunas ideas, pero en muchos casos no pareció funcionar para mí, que es donde entraron en juego mis cambios. Lo único que todavía estoy tratando de resolver es cómo redirigir todos los enlaces wp-admin que se escriben manualmente en la url. Parece que no puedo entender eso. Si tienes la oportunidad, prueba mi respuesta de actualización hacia abajo usando el site_urlfiltro en lugar de admin_url. Parece funcionar bastante bien.
Bryan Willis
9

Un enfoque que es oficialmente compatible con WordPress es mover los archivos de instalación de WordPress a un subdirectorio, manteniendo el sitio en la raíz, de esta manera:

Sitio URL: http://my-blog.com

URL de administrador: http://my-blog.com/7nxnkkugrdzm/wp-admin

Si bien esto no le da total libertad para cambiar su URL de administrador, significa que puede agregarle el prefijo que desee. Esto es igual de bueno desde el punto de vista de la seguridad. También tiene la ventaja de mover todos los archivos de instalación de WordPress a una ubicación desconocida para los usuarios, por lo que debería ser parte de cualquier estrategia de fortalecimiento de WordPress.

Desde el Codex de WordPress: dando a WordPress su propio directorio

Además, tenga en cuenta que si bien este esquema de seguridad se llama URL oscura , no es lo mismo que seguridad por oscuridad . La URL oscura es un esquema de seguridad perfectamente válido que es tan bueno como una contraseña, mientras que la seguridad por oscuridad se basa en el uso de procedimientos secretos no comprobados.

Sin embargo, se aplican las mismas advertencias que con las contraseñas: llame a la carpeta personalizada algo así como 7nxnkkugrdzm, no happy-snappy-admin. Además, asegúrese de que sus usuarios sepan que la URL del administrador es un secreto.

cmc
fuente
7

De hecho, hay un muy buen tutorial sobre esto aquí:

Cómo ocultar la información de WordPress del espejo de tu código fuente

Incluye cómo cambiar el nombre de wp-content, cambiar el nombre de wp-admin y eliminar la etiqueta del generador de WordPress.

Este tutorial cambiará evidencias obvias o indicaciones de ello en su código fuente, eliminando efectivamente la información de WordPress de su sitio .

Explica cómo cambiar el nombre de la carpeta, la URL de inicio de sesión de wp-admin y asegurarse de que login.php redirige al sitio principal para que las personas puedan ir allí directamente.

Graeme
fuente
6

Si desea evitar que los usuarios de nivel de suscriptor vean el directorio wp-admin, puede crear versiones independientes de las páginas de inicio de sesión / registro y perfil / edición en sus propios directorios. Luego, puede proteger su carpeta de administrador a través de htaccess o restricción de IP. (Aunque si hace esto, debe hacer una excepción para el archivo admin-ajax, ya que algunos complementos lo usan para agregar, um, funcionalidad AJAX).

Este enfoque le brinda la "oscuridad" que desea (que realmente no hace mucho, pero a menudo hace que los clientes y gerentes se sientan mejor), y también agrega cierta seguridad real al limitar el acceso al administrador. Además, sinceramente, una URL que solo dice "/ login" se ve mucho mejor que "wp-login.php".

No hay que decir que esto no hace que su sitio sea a prueba de balas. Pero es una mejora agradable y básica.

MathSmath
fuente
2

Una forma de bloquear el panel de control administrativo es utilizar las reglas .htaccess. Simplemente agregue un archivo .htaccess a la raíz del directorio wp-admin. Después de agregar este archivo, simplemente agregue la siguiente regla para denegar todas las direcciones IP y permitir solo su IP:

http://wp.tutsplus.com/tutorials/10-steps-to-securing-your-wordpress-installation/

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
whitelist address
allow from <IP ADDRESS HERE>
</LIMIT>
Josh
fuente
1

Si desea cambiar el nombre de wp-admin con el objetivo de agregar una capa adicional de seguridad a su instalación de WordPress, también puede probar el Roots / Bedrock WordPress Boilerplate . Puede ayudar a aislar la raíz web para limitar el acceso a archivos que no son web. También puede ayudar a organizar / asegurar todo el núcleo de WordPress al ponerlo en su propio subdirectorio, como cambiar el nombre de wp-content / a app /, así como estas características adicionales:

  • Gestión de dependencias con Composer
  • Fácil configuración de WordPress con archivos específicos del entorno.
  • Variables de entorno con Dotenv
  • Cargador automático para complementos mu (use complementos regulares como complementos mu)
  • Seguridad mejorada (raíz web separada y contraseñas seguras con wp-password-bcrypt)

También puede consultar su repositorio de GitHub para un uso más detallado:

Carl Alberto
fuente
0

No, no es posible cambiar el nombre de la carpeta wp-admin con ningún código corto o hack de htaccess,

En el pasado hice lo mismo para un cliente al realizar una búsqueda completa de carpetas a través de Coda (el editor que uso) para la etiqueta "wp-admin, wp-content ... etc" y elimino el "wp-" del archivos.

Después de eso, podrá instalarlo, pero:
debe hacer lo mismo con los complementos que desea instalar, debe actualizar el núcleo manualmente borrando la etiqueta "wp-" de las nuevas versiones.

En todas las formas en que no le sugiero que haga algo como esto, déjelo como está e intente implementar una página de inicio de sesión / registro / perfil de usuario para brindar a sus usuarios / clientes una mejor experiencia.

Cristian de Cozmolabs ha escrito un muy buen tutorial. Puede editar el código un poco y hacer que se ejecute en cualquier tema de WordPress.

También puede agregar un formulario de publicación desde la interfaz para que el administrador y los usuarios con capacidades para escribir una publicación puedan hacerlo desde la interfaz.

Aquí puede ver un ejemplo y un código sobre cómo crear una página Frontend Post. Envío de post front-end

También puedes echar un vistazo a algunos buenos complementos aquí que hacen lo mismo con más funcionalidad.

Philip
fuente
0

¿QUÉ PASA CON TRABAJAR WP-ADMIN DE UN IFRAME?

Cree una nueva página en el panel de wp llamada "Admin". por ejemplo: sudominio / admin /

Puede hacer una declaración de caso con header.php page.phpy / o footer.phppara deshabilitar cosas en la plantilla que no se necesitan, usando:

<?php
if(!is_page('admin')): //if not the admin page.

//wrap code not needed or wanted.

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%; //or 100vw
        height: 100%; //or 100vh
    }
}   
</style>

<div class="responsive-iframe">
<iframe seamless="seamless" scrolling="yes" src="http://yourdomain/wp-admin/" frameborder="0" allowfullscreen></iframe>
</div>

<?php 
endif;

Esto no es bonito, pero al menos hasta cierto punto puedes ocultar wp-admin de la url. Otra forma es posiblemente usar el reenvío de dominio con la URL de máscara habilitada.

samjco
fuente