web-dev-qa-db-fra.com

Puis-je renommer le dossier wp-admin?

Est-il possible de renommer le dossier wp-admin?

Je sais que je pourrais simplement le renommer, mais à moins que cela ne soit pris en charge par le code, beaucoup de choses se briseraient.

Si j'utilise un nom de dossier personnalisé, cela le rendra un peu plus sécurisé, sécurité par obscurité et tout ça.

69
Adam Dempsey

Malheureusement, ce n'est pas actuellement possible et il ne semble pas y avoir de volonté de le considérer comme une modification, comme vous pouvez le constater par ce fil récent sur la liste de wp-hackers et ce ticket sur trac .

Si vous souhaitez vraiment que cela soit revisité, je vous suggère:

  1. Présentez votre cas sur wp-hackers mais soyez prévenu que votre cas d'utilisation vaut mieux être bon et non pas "sécurité par l'obscurité" ou il sera abattu comme ci-dessus.

  2. Présentez votre argument dans un ticket trac avec les mêmes mises en garde.

  3. Mieux encore, téléchargez un correctif sur trac qui active les fonctionnalités souhaitées. Il est beaucoup plus difficile de dire non quand le travail est déjà fait (mais bien sûr, ils préfèrent dire "non" beaucoup plus souvent qu'ils ne disent "oui", alors soyez prévenus.)

38
MikeSchinkel

Non, vous ne pouvez pas renommer le dossier. Le chemin est codé en dur à plusieurs endroits dans la source de WordPress.

De toute façon, la sécurité par l'obscurité n'est pas vraiment une sécurité.

11
Viper007Bond

Les gens continuent à poser cette question, mais ils continuent à le marquer comme un doublon. La réponse choisie pour cela, cependant, n’est pas vraiment une réponse à la question.

Pour renommer l’administrateur wordpress, vous devez suivre deux étapes.

Dans le code suivant, j'utilise tableau de bord comme nom de mon nouvel administrateur. Dans le code ci-dessous, modifiez le tableau de bord en indiquant le nom de votre nouvel administrateur.

Vous devez d’abord dire à wordpress que vous souhaitez modifier l’URL de l’administrateur.

Sur la ligne 2558 wp-includes/link-template.php est le code qui détermine l'adresse URL de l'administrateur.

À l'aide du filtre admin_url, vous pouvez modifier avec succès l'URL de l'administrateur avec la fonction suivante:

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

Vous pouvez tester pour voir quelle est votre nouvelle URL en faisant ceci:

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

Cependant, si vous remarquez en cliquant sur l’administrateur que tout ne fonctionne pas et que certains des liens peuvent vous donner 404 pages introuvables ou quelque chose de similaire.

Deuxièmement, changez le .htaccess dans le répertoire racine de votre wordpress et ajoutez ce qui suit au début, avant toute chose.

#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

À présent, je ne suis pas un expert en matière de modification de .htaccess, de sorte que certaines de ces choses pourraient ne pas être nécessaires. Cependant, je n'ai jamais trouvé que cela ne fonctionnait pas.

Voici le tout. Créez un fichier et déposez-le dans votre dossier plugins ou mu-plugins. (n'oubliez pas de changer chaque instance du tableau de bord en votre URL d'administrateur préférée)

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

Problèmes?

Je n’en ai pas eu depuis plus d’un an avec cette méthode. Vous remarquerez peut-être que wp-admin fonctionnera toujours quel genre de merde, mais c'est plus une précaution que tout. J'avais des plugins mal écrits qui wp-admin codés en dur à certains endroits et qui ne se chargeaient pas en essayant de bloquer ou de rediriger wp-admin. Je suis sûr qu'il existe un moyen de faire cela avec le htaccess, mais je ne l'ai pas compris avec succès. En outre, cela n'a pas été testé sur multisite ou quoi que ce soit du genre.

Mise à jour: approche alternative

C'est assez similaire, mais pour une raison quelconque, ma réponse ci-dessus n'a pas fonctionné sur tous les hôtes que j'ai essayés.

Ajouter à .htaccess

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

Créez un fichier dans le dossier mu-plugins appelé new-admin.php et ajoutez-le ici:

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

Note: Cette approche semblait mieux fonctionner sur certains hôtes, mais le problème était de ne pas rediriger les liens wp-admin vers la nouvelle URL d'administrateur. Voici une approche que j'ai essayée ci-dessous. Alors quecela ne fonctionne pas ci-dessousJe pense que c'est sur la bonne voie. Je ne sais pas trop quel crochet utiliser. htaccess pourrait être une meilleure alternative, mais j'ai continué à avoir des boucles de redirection lorsque j'ai essayé de cette façon.

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' );
    }
  }
}
11
Bryan Willis

Une approche officiellement prise en charge par WordPress consiste à déplacer les fichiers d'installation de WordPress dans un sous-répertoire, tout en conservant le site à la racine, comme suit:

URL du site: http://my-blog.com

URL d'administrateur: http://my-blog.com/7nxnkkugrdzm/wp-admin

Bien que cela ne vous donne pas une totale liberté pour changer votre URL d'administrateur, cela signifie que vous pouvez le préfixe avec tout ce que vous voulez. C'est tout aussi bien du point de vue de la sécurité. Il présente également l'avantage de déplacer tous les fichiers d'installation de WordPress vers un emplacement inconnu des utilisateurs. Il devrait donc faire partie de toute stratégie de renforcement de Wordpress.

À partir du Codex WordPress: Donnant à WordPress son propre répertoire

Notez également que bien que ce schéma de sécurité s'appelle URL obscure, il ne s'agit pas de la même chose que sécurité par obscurité. Obscure URL est un schéma de sécurité parfaitement valide qui vaut tout autant qu'un mot de passe, tandis que sécurité par obscurité repose sur l'utilisation de procédures secrètes non prouvées.

Les mêmes mises en garde que pour les mots de passe s'appliquent: Appelez le dossier personnalisé quelque chose comme 7nxnkkugrdzm, pas happy-snappy-admin. Assurez-vous également que vos utilisateurs sont conscients que l'URL de l'administrateur est un secret.

9
cmc

Il y a en fait un très bon tutoriel à ce sujet ici:

Comment masquer les informations WordPress à partir de votre code source miroir

Comprend comment renommer wp-content, renommer wp-admin et supprimer la balise générateur de WordPress.

Ce tutoriel changera les preuves évidentes dans votre code source, supprimant efficacement les informations WordPress de votre site .

Il explique comment changer le nom du dossier, l’URL de connexion wp-admin et s’assurer que login.php est redirigé vers le site principal afin que les utilisateurs puissent y accéder directement.

7
Graeme

Si vous souhaitez empêcher les utilisateurs de niveau abonné de voir le répertoire wp-admin, vous pouvez créer des versions autonomes des pages de connexion/enregistrement et de profil/modification dans leurs propres répertoires. Ensuite, vous pouvez protéger votre dossier d’administrateur via htaccess ou une restriction IP. (Cependant, si vous faites cela, vous devriez créer une exception pour le fichier admin-ajax, car certains plugins l'utilisent pour ajouter, euh, AJAX fonctionnalité).

Cette approche vous donne "l'obscurité" souhaitée (ce qui ne fait pas grand-chose, mais aide souvent les clients et les gestionnaires à se sentir mieux), et ajoute une sécurité réelle en limitant l'accès à l'administrateur. De plus, honnêtement, une URL qui dit simplement "/ login" est bien plus jolie que "wp-login.php".

Il va sans dire que cela ne rend pas votre site pare-balles. Mais c'est une belle amélioration de base.

6
MathSmath

Un moyen de verrouiller le panneau de configuration administratif consiste à utiliser les règles .htaccess. Ajoutez simplement un fichier .htaccess à la racine du répertoire wp-admin. Après avoir ajouté ce fichier, ajoutez simplement la règle suivante pour refuser toutes les adresses IP et autoriser uniquement votre adresse 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>
2
Josh

Si vous souhaitez renommer wp-admin dans le but d'ajouter une couche de sécurité supplémentaire à votre installation WordPress, vous pouvez également essayer le Roots/Bedrock WordPress Boilerplate . Cela peut aider à isoler la racine Web pour limiter l'accès aux fichiers non Web. Il peut également aider à organiser/sécuriser l'ensemble du noyau WordPress en le mettant dans son propre sous-répertoire, comme renommer wp-content/to app /, ainsi que les fonctionnalités supplémentaires suivantes:

  • Gestion des dépendances avec Composer
  • Configuration facile de WordPress avec des fichiers spécifiques à l'environnement
  • Variables d'environnement avec Dotenv
  • Autoloader pour les plugins mu (utilisez les plugins habituels comme plugins mu)
  • Sécurité renforcée (racine Web séparée et mots de passe sécurisés avec wp-password-bcrypt)

Vous pouvez également vérifier leur GitHub Repo pour une utilisation plus détaillée:

1
Carl Alberto

QU'EN EST-IL DE TRAVAILLER WP-ADMIN À PARTIR D'UN IFRAME?

Créez une nouvelle page dans le tableau de bord wp appelée "Admin". par exemple: votredomaine/admin /

Vous pouvez créer une déclaration de cas avec le header.phppage.php et/ou le footer.php pour désactiver les éléments inutiles du modèle, en utilisant:

<?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;

Ce n'est pas joli, mais au moins dans une certaine mesure, vous pouvez cacher wp-admin de l'URL. Une autre méthode consiste à utiliser éventuellement le transfert de domaine avec l’URL du masque activée.

0
samjco

Jetez un coup d’œil à http://wordpress.org/extend/plugins/stealth-login/ ceci peut vous aider.

0
edelwater

Non, il n'est pas possible de renommer le dossier wp-admin avec un code trop court ou un hack htaccess,

Dans le passé, j’ai fait de même pour un client en effectuant une recherche complète dans le dossier via Coda (l’éditeur que j’utilise) pour la balise "wp-admin, wp-content ... etc" et j’ai supprimé le "wp-" de la des dossiers.

Après cela, vous pourrez l'installer mais:
Vous devez faire la même chose avec les plugins que vous voulez installer. Vous devez mettre à jour le noyau manuellement en effaçant la balise "wp-" des nouvelles versions.

De toutes les façons, je ne vous suggère pas de faire quelque chose comme ça, laissez-le tel quel et essayez d'implémenter une page de connexion/enregistrement/profil utilisateur pour offrir une meilleure expérience à vos utilisateurs/clients.

Cristian de Cozmolabs ai écrit un très bon tutoriel. Vous pouvez éditer un peu le code et le faire fonctionner dans n’importe quel thème WordPress.

Vous pouvez également ajouter un formulaire de publication à partir de l'interface afin que l'administrateur et les utilisateurs dotés des fonctionnalités permettant de rédiger une publication puissent le faire à partir de l'interface.

Ici, vous pouvez voir un exemple et un code sur la façon de créer une page de publication frontale. Soumission post-frontale

Aussi, vous pouvez jeter un oeil à quelques jolis plugins ici qui font la même chose avec plus de fonctionnalités.

0
Philip