Hay múltiples razones por las que alguien quiera ocultar el hecho de que un sitio esté creado con WordPress, pero para mi la única es la seguridad, pues es tan popular que suele ser objetivo de los hackers, y nunca está de más ponérselo complicado.
Afortunadamente es relativamente sencillo ocultar el hecho de que un sitio está hecho con WordPress, así que vamos a ver algunos modos de conseguirlo, luego tú aplicas los que más te gusten o sirvan.
Eliminar la categoría de la URL
Una de las evidencias de que un sitio está hecho con WordPress es el /category/ en las URLs así que un paso para conseguir esa ocultación deseada sería eliminar la categoría de las URLs. Conseguirlo es tan sencillo como añadir la siguiente regla a tu fichero .htaccess:
RewriteRule ^category/(.+)$ http://tudominio.com/$1 [R=301,L]
Elimina cualquier referencia en el tema
Parece obvio, pero he visto más de un sitio en el que habían ocultado las carpetas o incluso la pantalla de acceso y luego en el tema se leía eso de «Powered by WordPress«, así que aunque parezca una tontería repasa sobre todo el pié de página (footer.php) de tu tema activo para eliminar cualquier referencia en este sentido.
Cambia la ubicación de la carpeta de subida de archivos
Otro elemento diferenciados de WordPress es que, por defecto, toda instalación subirá los archivos multimedia a la carpeta /uploads/ así que es un elemento a ocultar. Para cambiar la ubicación de la carpeta donde se suben los archivos en WordPress nada más fácil que añadas, antes de la línea require_once(ABSPATH.’wp-settings.php’); el siguiente código al fichero de configuración de WordPress (wp-config.php):
define('UPLOADS', 'wp-content/archivos');
Lo ideal es hacerlo en una instalación nueva, para que no haya nada en la carpeta por defecto, en caso contrario te tocará mover todo lo que haya en /uploads/ a /archivos/
Cambiar la ubicación de wp-content
Lo anterior, no obstante, es un apaño, pues lo ideal es cambiar completamente la ubicación de la carpeta /wp-content/. Con el siguiente código, añadido al archivo wp-config.php lo consigues en un instante:
define( 'WP_CONTENT_DIR', 'NUEVA RUTA A WP-CONTENT' );
Solo ten en cuenta el importante detalle de que la nueva ruta sea accesible vía web, así que lo mejor es crear una carpeta nueva, por ejemplo /files/ y la definas así.
También es importante, por supuesto, hacer esta modificación en una instalación nueva y comprobar que tus plugins son compatibles con esta posibilidad, que hay algunos que no funcionan en una ubicación distinta a la por defecto.
Cambiar la escritura de URLs
Una versión refinada de lo anterior sería, sin cambiar nada de su sitio, cambiar totalmente el rewrite de las URLs para que no haya ninguna referencia a /wp-content/ a /themes/ o a /plugins/.
Podemos crear una función como la siguiente:
/** * Reescritura de URLs * * Modifica el rewrite de: * /wp-content/themes/nombredeltema/include/css/ a /include/css/ * /wp-content/themes/nombredeltema/include/js/ a /include/js/ * /wp-content/themes/nombredeltema/include/img/ a /include/img/ * /wp-content/plugins/ a /plugins/ */ function nowp_add_rewrites($content) { global $wp_rewrite; $nowp_new_non_wp_rules = array( 'assets/(.*)' => THEME_PATH . '/include/$1', 'plugins/(.*)' => RELATIVE_PLUGIN_PATH . '/$1' ); $wp_rewrite->non_wp_rules = array_merge($wp_rewrite->non_wp_rules, $nowp_new_non_wp_rules); return $content; } function nowp_clean_urls($content) { if (strpos($content, RELATIVE_PLUGIN_PATH) > 0) { return str_replace('/' . RELATIVE_PLUGIN_PATH, '/plugins', $content); } else { return str_replace('/' . THEME_PATH, '', $content); } } // No se hace rewrite en multisitio o temas hijo para no joderlo todo if ( !is_multisite() && !is_child_theme() ) { add_action('generate_rewrite_rules', 'nowp_add_rewrites'); if ( !is_admin() ) { $tags = array( 'plugins_url', 'bloginfo', 'stylesheet_directory_uri', 'template_directory_uri', 'script_loader_src', 'style_loader_src' ); add_filters($tags, 'nowp_clean_urls'); } }
Fíjate que en este ejemplo se da por hecho que existe una carpeta /include/ en el tema, que debes cambiar a la adecuada de tu tema activo.
Cambiar la ubicación de wp-config.php
Además, también es buena idea cambiar la ubicación del mismo fichero de configuración, sobre todo por cuestiones de seguridad. En esta ocasión lo único que tienes que hacer es moverlo a la carpeta superior a la de la instalación de WordPress, por ejemplo, de /public_html/web/ a /public_html/.
Oculta las referencias a WordPress en la cabecera del tema
Todos los temas WordPress contienen una serie de referencias en su cabecera que fácilmente identificarán tu sitio como un WordPress. Conviene, por diversos motivos, eliminarlas, sobre todo ocultar la que muestra la versión de WordPress. Para ello podemos crear una función o plugin que elimine toda referencia a la hoja de estilos, versión de WordPress y demás elementos que lo «delatan»:
/** * Limpieza de wp_head() * * Elimina enlaces innecesarios * Elimina el CSS utilizado por el widget de comentarios recientes * Elimina el CSS utilizado en las galerías * Elimina el cierre automático de etiquetas y cambia de ''s a "'s en rel_canonical() */ function nowp_head_cleanup() { // Eliminamos lo que sobra de la cabecera remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'wp_generator'); remove_action('wp_head', 'feed_links', 2); remove_action('wp_head', 'index_rel_link'); remove_action('wp_head', 'wlwmanifest_link'); remove_action('wp_head', 'feed_links_extra', 3); remove_action('wp_head', 'start_post_rel_link', 10, 0); remove_action('wp_head', 'parent_post_rel_link', 10, 0); remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0); remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0); remove_action('wp_head', 'feed_links', 2); remove_action('wp_head', 'feed_links_extra', 3); global $wp_widget_factory; remove_action('wp_head', array($wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style')); if (!class_exists('WPSEO_Frontend')) { remove_action('wp_head', 'rel_canonical'); add_action('wp_head', 'nowp_rel_canonical'); } } function nowp_rel_canonical() { global $wp_the_query; if (!is_singular()) { return; } if (!$id = $wp_the_query->get_queried_object_id()) { return; } $link = get_permalink($id); echo "\t<link rel=\"canonical\" href=\"$link\">\n"; } add_action('init', 'nowp_head_cleanup'); /** * Eliminamos la versión de WordPress */ add_filter('the_generator', '__return_false'); /** * Limpieza de los language_attributes() usados en la etiqueta <html> * * Cambia lang="es-ES" a lang="es" * Elimina dir="ltr" */ function nowp_language_attributes() { $attributes = array(); $output = ''; if (function_exists('is_rtl')) { if (is_rtl() == 'rtl') { $attributes[] = 'dir="rtl"'; } } $lang = get_bloginfo('language'); if ($lang && $lang !== 'es-ES') { $attributes[] = "lang=\"$lang\""; } else { $attributes[] = 'lang="es"'; } $output = implode(' ', $attributes); $output = apply_filters('nowp_language_attributes', $output); return $output; } add_filter('language_attributes', 'nowp_language_attributes');
Cambia las rutas de acceso y administración
De nada serviría todo lo anterior si cualquiera puede ver la ruta de acceso a la administración de tu WordPress ¿no?
Hay muchas maneras de limitar el acceso a la pantalla de registro/acceso y la administración, pero quizás el más cómodo es usar un plugin como HC Custom admin. Puedes personaliza fácilmente las nuevas URLs a tu gusto.
Impedir acceder a la administración de WordPress
Ahora bien, si lo prefieres, igual es mejor no complicarte la vida y, directamente, impedir que nadie acceda a la administración de WordPress, ofreciendo una página de error 404, mucho más convincente.
Si esta es tu elección simplemente añade el siguiente código a tu plugin de utilidades o al archivo functions.php:
//Redirigir de wp-admin a 404 add_action('login_form','redirect_wp_admin'); function redirect_wp_admin(){ $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' ); } } }
Personalmente creo que es mejor no ocultar que tu sitio está creado con WordPress, sino mostrarlo con orgullo, pero teniendo en cuenta medidas básicas de seguridad para mantener seguro WordPress, pero tu mismo.
Si sabes algún truquito más nos lo cuentas en los comentarios.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Interesante colección de trucos. Algunos ya los tenía aplicados, pero otros me han parecido interesantes y sencillos. Gracias.
Muy interesante.
Una pregunta: si aplico el último truco el de redirigir a un 404 la pantalla de acceso a la administración ¿cómo accedo a la administración?
Gracias.
Lo mismo me pregunto
tengo la misma duda.. ¿Alguna respuesta?
Yo tengo la solución. Descargas All in one WP Security, un excelente plugin de seguridad (después de Wordfence), buscar en algunas de sus opciones hasta encontrar la de cambiar el wp-admin. Lo cambias por la URL que quieras y listo, cuando pongas wp-admin, te redirigirá a la página de error 404 de tu tema activo. Sin código ni nada. O sino, puedes descargar HC Custom WP-Admin URL (https://wordpress.org/plugins/hc-custom-wp-admin-url/), lo activas, y ya está, y para mayor seguridad añades el código de antes si quieres. Espero que sirva de ayuda =).
A mi tambien me gustaria saber como se accede a la administración si aplico el truco el de redirigir a un 404. Tendria que administrar remotamente?
Muy interesante y útil la web AYUDAWP.COM. FELICIDADES.
He intentado probar el truco «Eliminar categoria de la URL» (RewriteRule ^category/(.+)$ http://miblog.com/$1 [R=301,L]) y no hay manera de que desaparezca.
Tengo un wordpress multiusuario instalado en http://miblog.com/carpeta/ con un redireccionamiento 301 de http://miblog.com a http://miblog.com/carpeta/
He probado de muchas maneras sin conseguir nada. ¿A qué puede ser debido?
Hola,
Me ha parecido muy interesante, estoy peleandome en el punto de «Cambia las rutas de acceso y administración».
He instalado el plugin comentado y todo funciona bien pero veo un fallo que quiero solucionar. Creo un usuario test (como un usuario normal) y una vez iniciado con test, si introduce «www.midominio.com/wp-admin» puede acceder al panel de control (no se como lo llamais), donde puede cambiar los colores de su perfil y dos cosas mas que no quiero que vean. ¿Como lo solucionaría?
He visto este post https://ayudawp.com/restringir-acceso-a-wp-admin/ , pero no se si seria correcto hacerlo ya que el post es del 2011 y tengo este plugin instalado.
Gracias de antenamo, estoy aprendiendo mucho en esta web.
Consulta, al editar las tablas wp_options y wp_usermeta, aparecen varias opciones con wp delante del nombre, muchas de ellas no llevan el «_»… en esas opciones también hay que cambiar el «wp» por el nuevo nombre del prefijo?
Cambiar la escritura de URLs
Una versión refinada de lo anterior sería, sin cambiar nada de su sitio, cambiar totalmente el rewrite de las URLs para que no haya ninguna referencia a /wp-content/ a /themes/ o a /plugins/.
Hice eso pero me da error la pagina podías explicar mas?
y estas en la misma como accedes a la administracion?