En vrac #13

Comment faire une page de maintenance avec un fichier .htaccess ?

Vous voulez migrer votre blog, changer de thème, ou mettre à jour WordPress : pourquoi ne pas rediriger vos visiteurs vers une page de maintenance dans ce cas ?

La première étape consiste à créer cette page de maintenance, je ne reviens pas sur ce point. Ensuite, il vous faut créer un fichier .htaccess avec le contenu suivant, et l’uploader à la racine de votre site/blog.

RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L]

L’explication en détail :

  1. Active le module de réécriture d’url,
  2. Première condition : « toutes les autres pages que maintenance.html »,
  3. Deuxième condition : « toutes les IP autres que 123.123.123.123″ (remplacer 123.123.123.123 par votre adresse IP),
  4. L’url est réécrite suivant les deux conditions : toutes les personnes n’ayant pas l’adresse IP indiquée et accédant aux pages autres que maintenance.html se voient redirigées vers cette page.

Note : 302 est le code pour une redirection temporaire, cette précision est nécessaire pour éviter qu’un moteur ne remplace l’indexation de votre site/blog par votre page de maintenance.

Cette règle de rewriting vous permet de rediriger proprement vos visiteurs, tout en vous permettant d’accéder au site/blog.

Pour ceux qui veulent de la lecture de chevet, je leur conseille la documentation sur le Rewriting, ainsi que quelques exemples officiels dans la documentation Apache.

Vous pouvez également lire : Comment restreindre l’accès à un répertoire avec un fichier .htaccess.

Note : il faut que votre hébergeur autorise l’utilisation des fichiers .htaccess.

Restreindre l’accès à un répertoire avec un fichier .htaccess

Lorsque je prépare d’importantes modifications pour mon blog, je travaille sur une autre instance de WordPress, une « copie » installée dans un autre répertoire.

Pour éviter que les moteurs de recherche n’indexe ce répertoire (donc du contenu dupliqué) ou que des utilisateurs n’y accède, je restreins l’accès avec des règles basées sur mon adresse IP.

Voici le contenu de mon fichier .htaccess (à uploader à la racine du répertoire à protéger) :

Deny from all
Allow from 123.123.123.123

La première instruction indique qu’il faut refuser toutes les visites, et la seconde me permet d’autoriser mon adresse IP (vous pouvez dupliquer cette ligne pour rajouter d’autres adresses).

Ces instructions ont pour effet d’afficher une erreur 500 à toutes les autres personnes que moi.

Cependant, une solution plus propre consiste à rediriger automatiquement tout le trafic à la racine du blog en fonction des adresses IP : pour cela, il faut utiliser une règle de réécriture d’url.

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule .* http://www.woueb.net [L]

L’explication en détails :

  1. Le module de réécriture d’url est activé,
  2. Une condition est définie : « toutes les IP autres que 123.123.123.123″,
  3. On réécrit l’url suivant la règle suivante : « pour toutes les pages du site, et pour toutes les personnes définie par la condition, le visiteur est renvoyé vers www.woueb.net »

Voilà, je ne sais pas si tout le monde a suivi, mais j’espère l’avoir expliqué assez simplement ! :)

Note : comme le souligne Aestyle dans son commentaire, il faut que votre hébergeur ait le module URL Rewriting d’activé au niveau du serveur.