Redirections .htaccess
Sur l'hébergement web mutualisé HolyCloud (serveur Apache), le fichier .htaccess à la racine du site (public_html) permet de définir des redirections, de forcer HTTPS et de réécrire des URLs sans accès à la configuration globale du serveur.
Prérequis
- Hébergement mutualisé avec mod_rewrite activé (par défaut sur les offres HolyCloud)
- Accès File Manager ou FTP au répertoire du site
- Sauvegarde du
.htaccessexistant avant modification
Accéder au fichier .htaccess
- Panneau cPanel → File Manager.
- public_html (ou dossier du domaine addon).
- Settings → cochez Show Hidden Files (dotfiles).
- Éditez
.htaccessou créez-le s'il n'existe pas.
Une erreur de syntaxe peut provoquer une erreur 500 sur tout le site — gardez une copie de secours.
Activer le moteur de réécriture
En tête de fichier (souvent déjà présent avec WordPress) :
RewriteEngine On
RewriteBase /
Redirection 301 : domaine sans www vers www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^votredomaine\.fr$ [NC]
RewriteRule ^(.*)$ https://www.votredomaine.fr/$1 [L,R=301]
Redirection 301 : www vers apex (sans www)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.votredomaine\.fr$ [NC]
RewriteRule ^(.*)$ https://votredomaine.fr/$1 [L,R=301]
Forcer HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Si le panneau active déjà Force HTTPS, ne dupliquez pas cette règle (risque de boucle).
Rediriger une page ancienne vers une nouvelle
Redirect 301 /ancienne-page.html https://www.votredomaine.fr/nouvelle-page/
Plusieurs pages :
Redirect 301 /produits https://www.votredomaine.fr/boutique/
Redirect 301 /contact.php https://www.votredomaine.fr/contact/
Redirection d'un sous-dossier entier
RewriteEngine On
RewriteRule ^blog/(.*)$ https://www.votredomaine.fr/actualites/$1 [L,R=301]
Redirection par code (RedirectMatch)
Toutes les URLs .html vers sans extension (exemple) :
RedirectMatch 301 ^/(.*)\.html$ https://www.votredomaine.fr/$1
Redirection temporaire 302 (maintenance)
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^198\.51\.100\.42$
RewriteRule ^(.*)$ https://www.votredomaine.fr/maintenance.html [L,R=302]
Remplacez l'IP par la vôtre pour accéder au site réel pendant la maintenance.
Bloquer l'accès à un répertoire
RedirectMatch 403 ^/private/
Ou authentification basique via Directory Privacy dans le panneau (préférable pour les zones admin).
Tester les redirections
Depuis votre poste :
curl -I https://www.votredomaine.fr/ancienne-page.html
Cherchez :
HTTP/1.1 301 Moved Permanently
Location: https://www.votredomaine.fr/nouvelle-page/
WordPress et .htaccess
WordPress régénère des blocs # BEGIN WordPress. Placez vos règles au-dessus ou en dessous selon le besoin ; en général les redirections globales se placent avant le bloc WordPress.
Après changement de permaliens : Réglages → Permaliens → Enregistrer pour régénérer les règles internes.
Dépannage
| Symptôme | Cause | Action |
|---|---|---|
| ---------- | ------- | -------- |
| 500 Internal Server Error | Syntaxe Apache | Restaurer backup ; commenter lignes |
| Boucle infinie | Double HTTPS/www | Une seule règle + panneau Force HTTPS |
| 301 ne s'applique pas | Cache CDN/navigateur | Purger cache Cloudflare ; curl -I |
| 404 après redirect | Cible inexistante | Vérifier URL cible |
Bonnes pratiques SEO
- Utilisez 301 pour les changements permanents d'URL.
- Évitez les chaînes de redirections (A→B→C) ; redirigez directement vers la cible finale.
- Mettez à jour les liens internes dans le CMS, pas seulement
.htaccess.
Besoin d'aide ?
Joignez le contenu actuel de .htaccess (sans mots de passe) et l'URL source/cible attendue au ticket support.