WordPress 4.4 Multisite – Php 7 – Htaccess – Ovh sous répertoire avec publication a la racine et permaliens

wordpress-multisite-graphic-500pxInstallation et Configuration

La configuration n’a pas l’air comme ça très complexe et probablement que lors d’une fresh install ca se passe facilement. Mais dès lors que l’on a des plugins, des personnalisations de fichier de conf et des ajouts maison, c’est un peu plus compliqué. Tout se fait bien entendu, et WordPress 4.4 sous Php 7, chez Ovh (sans module préinstallé bien sur) en installation multisite, protégé par htaccess et avec des permaliens personnalisés sous la forme /%category%/%postname%-%post_id%/ c’est la panacée (ou presque). Il a fallu batailler un moment, c’est pour ça que je vous livre toute la procédure aujourd’hui pour éviter de galérer si vous avez les mêmes problèmes que moi. Rien de grave, et franchement sur le net c’est bien documenté on trouve ce qu’il faut sur le codex WordPress pour avancer dans le debugging.

Attention je ne vous explique pas comment faire l’installation de WP (on balance sur le ftp et on suit les écrans d’install) qui est par ailleurs très bien documenté sur le site officiel ou un peu partout sur le net. Nous partons donc du principe que l’installation de WP fonctionne et se trouve dans un répertoire de votre espace d’hébergement web, en général chez OVH www/

Pour l’exemple nous l’appellerons “blog” et de facto il se trouve donc dans votre ftp ici : /www/blog/  avec une arborescence connue wp-admin/ wp-includes/ et wp-content/

Pour débuter, rendez vous sur votre espace client Ovh pour activer le php 7 dans la section Hébergement (cf capture ci dessous). Bien entendu, vous cliquez sur modifier la conf, php 7, vous attendez quelques minutes et hop c’est réglé.

 

Activation du PHP 7 :

Activation PHP 7

 

Activation du Multisite WordPress :

Il faut éditer le fichier wp-config.php et ajouter ceci :

 /**
 * Langue de localisation de WordPress, par défaut en Anglais.
 *
 * Modifiez cette valeur pour localiser WordPress. Un fichier MO correspondant
 * au langage choisi doit être installé dans le dossier wp-content/languages.
 * Par exemple, pour mettre en place une traduction française, mettez le fichier
 * fr_FR.mo dans wp-content/languages, et réglez l'option ci-dessous à "fr_FR".
 */
 define ('WPLANG', 'fr_FR');
 define ('WP_ALLOW_MULTISITE', 'true');
 define('MULTISITE', true);
 define('SUBDOMAIN_INSTALL', false);
 $base = '/';
 define('DOMAIN_CURRENT_SITE', 'www.votre site.com');
 define('PATH_CURRENT_SITE', '/');
 define('SITE_ID_CURRENT_SITE', 1);
 define('BLOG_ID_CURRENT_SITE', 1);
 define( 'AUTH_SALT', 'une clef generee');
 define( 'SECURE_AUTH_SALT', 'une clef generee' );
 define( 'LOGGED_IN_SALT', 'une clef generee' );
 define( 'NONCE_SALT', 'une clef generee');

 /* C'est tout, ne touchez pas à ce qui suit ! Bon blogging ! */

 

 

HTACCESS :

Vos fichiers htaccess doivent être configurés de la manière suivante :

Celui du répertoire /www/blog/

On suit les liens symboliques, on empêche l’affichage du répertoire, on fait suivre les règles et les conditions vers le répertoire de notre blog pour tout ce qui a attrait aux requêtes php.

Options +FollowSymLinks
Options -Indexes

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress

 

Et le deuxième fichier d’emplacement /www/

On peut éventuellement commenter la ligne #uploaded files, en fonction de votre installation et de votre configuration.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

#uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) wp/$1 [L]
RewriteRule ^(.*\.php)$ wp/$1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WORDPRESS

 

Configuration WordPress :

Pour fignoler votre installation multisite de WordPress, rendez vous dans votre menu admin WP, Section Réglages, puis Permalien et cocher “Structure Personnalisée” et enfin inscrivez ceci /blog/%category%/%postname%-%post_id%

N’hésitez pas a installer plusieurs navigateurs, et penser a vider les caches lors de vos modifs. Penser bien sur a la sauvegarde mysql, et ftp pour les fichiers ou les dossiers que vous allez modifier. Le backup c’est le bien ! 🙂

Happy coding ! Bonne lecture.

multisite wordpress

Fichier htaccess

sécuriser le fichier htaccess est primordial pour un blog wordpress mais pour tout autre site également. certaines options sont communes bien entendu, mais quelque fois peu connus pour éviter des attaques standards.

un grand classique, empêcher les visiteurs mal intentionnés de lister le contenu d’un répertoire :

#Anti Listage
Options -Indexes

Securiser WordPress

Sécuriser son blog sous WordPress

Etape 1 – Restreindre l’accès à wp-content et wp-includes

Pour cela, utilisons le bon vieux fichier .htaccess et modifions le afin de restreindre l’accès à tous les fichiers images, CSS et Java 😉

Exemple ci-dessous

Order Allow,Deny
Deny from all
<files ~ "\.(css|jpe?g|png|gif|js)$">
Allow from all
</files>

Si vous voulez faire des exceptions pour certains plugin, il suffit de renseigner le fichier
wp-content/.htaccess :

<files "votreplugin.php">
Allow from all
</files>

Mettez ce code dans votre .htaccess dans les répertoires wp-content et wp-includes


Etape 2 – Restreindre l’accès à wp-admin

Pour restreindre l’accès à wp-admin vous avez 2 possibilités. Mettez un fichier .htaccess dans votre répertoire wp-admin avec l’un des deux choix suivants :

Restriction par IP:

order deny,allow
allow from a.b.c.d # où abcd est votre ip statique
deny from all

Avec ça, le navigateur refusera l’accès au répertoire dans lequel est placé le .htaccess si l’ip n’est pas la bonne.

Restriction par mot de passe sur le répertoire (fichier .htaccess et .htpasswd):


AuthUserFile /etc/httpd/htpasswd
AuthType Basic
AuthName "restricted"
Order Deny,Allow
Deny from all
Require valid-user
Satisfy any

ou version améliorée:

Un bug est généré lorsqu’un utilisateur poste un commentaire sans laisser son adresse email, une boite de dialogue de mot de passe apparaît. Cela survient car des fichiers image ou CSS sont situés à l’intérieur du répertoire wp-admin. Pour s’en sortir, vous pouvez rajouter cette règle qui désactive les fichiers .php mais autorise le reste. De cette manière vous évitez beaucoup d’attaques directes et permet de mieux sécuriser vos répertoires avec toutes ces fonctions.


<files ~ "\.(php)$">
AuthUserFile /etc/httpd/htpasswd
AuthType Basic
AuthName "restricted"
Order Deny,Allow
Deny from all
Require valid-user
Satisfy any
</files>

C’est déjà un bon pas, il reste encore a faire bien sûr, je pense aux traditionnels chmod entre autre, et nous verrons cela également.

Annuaire Webmaster