• Home
  • Nous contacter

Le blog d'Adfab

Le blog d'Adfab

Le blog d'Adfab

Le blog d'Adfab
CMS

Admin WordPress sur un sous-domaine

Aujourd’hui tuto bonne pratique wordpress sécurité

Nous allons voir comment séparer l’admin de wordpress vers un sous-domaine. Exemple : votre site https://exemple.com et l’admin sur https://admin.exemple.com

Configuration Serveur

Mise en place de 3 liens symboliques dans le repertoire wp-admin

Dans le répertoire wp-admin

ln -s ../wp-includes ./
ln -s ../wp-content ./
ln -s . wp-admin

Config Apache

2 vhosts à déclarer pour pouvoir séparer l’url d’admin

  • L’url de l’admin
ServerName admin.exemple.com
DocumentRoot /path/to/wordpress/wp-admin
SSLEngine on
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/server.key

  • Le site
        

ServerName exemple.com
DocumentRoot /path/to/wordpress/
SSLEngine on
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/server.key
CustomLog /path/to/apache_access.log common

Config WordPress

wp-config.php

Ajouter ces lignes dans votre fichier wp-config.php en les adaptant à votre domaine

define('ADMIN_SITEURL', 'https://admin.exemple.com');
define( 'ADMIN_COOKIE_PATH', FALSE );
define( 'COOKIE_DOMAIN', '.exemple.com' );
if ($_SERVER['HTTP_SSL'] == 'on') $_SERVER['HTTPS']='on';
if('https://' . $_SERVER['HTTP_HOST'] == ADMIN_SITEURL)
	$_SERVER['PHP_SELF'] = '/wp-admin' . $_SERVER['PHP_SELF'];

.htaccess

Ajouter ces lignes dans votre fichier .htaccess en les adaptant à votre domaine

	

Header set Access-Control-Allow-Origin "*"


RewriteEngine On
RewriteBase /
RewriteCond ${HTTP_HOST} exemple.com
RewriteRule ^/wp-admin/(.*) https://admin.exemple.com/$1 [R=301,QSA,L]

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on [NC]
 
RewriteCond ${HTTP_HOST} exemple.com
RewriteRule ^/wp-admin/(.*) https://admin.exemple.com/$1 [R=301,QSA,L]
 
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

wp-login.php

  • Copie et modification du fichier wp-login.php dans le dossier wp-admin
  • Comme le vhost admin pointe vers le répertoire wp-admin, on  indique à WordPress d’aller chercher les fichier wp-load.php un répertoire au-dessus dans l’arborescence

Remplacer la ligne

require( dirname(__FILE__) . '/wp-load.php' );

par

require( dirname(__FILE__) . '/../wp-load.php' );
  • Modifier les 4 formulaires qui font appel à l’admin WordPress

Dans la version WordPress 3.9, les modifications se situent aux lignes 526, 603, 692 et 858 : remplacer l’appel à site_url() par admin_url()

Dans la version WordPress 4.0, les modifications se situent aux lignes 528, 616, 705 et 865 : remplacer les appels à network_site_url() et site_url() par admin_url()

de

vers


Theme

/wp-content/themes/votretheme Un repertoire votretheme-includes est créé dans le répertoire thème votretheme Création d’un fichier votretheme_admin.php pour gérer les filtres pour les urls de l’admin (admin, login et logout).

function mondomaine_admin_url($admin_url, $path) {
	if(is_admin()|| 0 !== strpos($path, 'admin-ajax.php')){
		$admin_url = ADMIN_SITEURL.'/';
		if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
			$admin_url .= ltrim($path, '/');
	}
	return $admin_url;
}
add_filter('admin_url', 'mondomaine_admin_url', 10, 2);

function mondomaine_login_url($login_url_wp, $redirect) {
	$login_url = admin_url('wp-login.php', 'login');
	if ( !empty($redirect) )
		$login_url = add_query_arg('redirect_to', urlencode($redirect), $login_url);
	if ( FALSE !== strpos($login_url_wp, 'reauth') )
		$login_url = add_query_arg('reauth', '1', $login_url);
	return $login_url;
}
add_filter('login_url', 'mondomaine_login_url', 10, 2);

function mondomaine_logout_url($logout_url_wp, $redirect) {
	$args = array( 'action' => 'logout' );
	if ( !empty($redirect) ) {
		$args['redirect_to'] = urlencode( $redirect );
	}
	$logout_url = add_query_arg($args, admin_url('wp-login.php', 'login'));
	$logout_url = wp_nonce_url( $logout_url, 'log-out' );
	return $logout_url;
}

add_filter('logout_url', 'mondomaine_logout_url', 10, 2);

Ajout de l’appel du fichier votretheme_admin.php dans le fichier votretheme_init.php

require get_template_directory() . '/votretheme-includes/votretheme_admin.php';

Et voilà votre admin est joignable sur https://admin.exemple.com

23/06/2015 27 MIN READ BY: Emmanuel GONZALEZ 0 COMMENT
SHARE
LIRE LA SUITE

Emmanuel GONZALEZ

Style avancé sur les formulaires

Flext au Hackathon

VOUS POURRIEZ AIMER

CMS Drupal Fuse, démarrez vos projets Drupal 7 à la vitesse d’une fusée

CMS Ne jouez plus avec le feu, jouez avec Drupal 8 !

CMS WordPress à la base

CMS e-Commerce WordPress E-commerce ? avec woocommerce c’est possible !

CMS Drupal 8 : formulaire d’upload et custom API

CMS e-Commerce Prestashop 1.7, pourquoi pas…

A propos d’Adfab

Nous sommes un studio de production digitales et d’innovation digitales au service des agences et des annonceurs
Nous recherchons le scintillement dans les regards et le plaisir de réalisations sur-performantes
Nous sommes techno-agnostiques
Nous sommes Adfab

Le blog d'Adfab
Copyright © 2018 Adfab Connect