Dans un site PrestaShop, le fichier .htaccess est indispensable au bon fonctionnement de nombreuses fonctionnalités. Il intervient dans la gestion des URLs réécrites, de la sécurité, de la performance et de la maintenance. Bien le comprendre, c’est éviter de nombreux bugs et profiter pleinement des capacités de la plateforme.
Qu’est-ce que le fichier .htaccess dans PrestaShop ?
.htaccess est un fichier de configuration pour le serveur Apache. Dans PrestaShop, ce fichier est automatiquement généré à partir du back-office, en fonction des options activées (comme les URL simplifiées ou la réécriture d’URL).
Il permet à PrestaShop de :
- gérer les URLs "propres" (ex :
/t-shirts/5-tshirt-bleu.htmlau lieu deindex.php?id_product=5) - rediriger certaines pages (301, 302)
- protéger des fichiers ou dossiers sensibles
- améliorer la sécurité et les performances
| 📝 Il se trouve souvent à la racine de la boutique, généralement dans le dossier public de votre hébergement. Il peut se retrouver à d’autres endroits pour protéger certains dossiers. |
Comment PrestaShop gère le .htaccess ?
Génération automatique
PrestaShop génère ou met à jour le fichier .htaccess :
- Lors de l’activation des URL simplifiées (SEO & URLs > "URL simplifiée")
- Lors de la réinitialisation des URLs via le bouton “Générer le fichier
.htaccess” dans le back-office - Lors de l’installation de certains modules
Le contenu est automatiquement structuré entre deux balises :
# ~~start~~ Do not remove this comment, PrestaShop uses it to build your .htaccess file ... # ~~end~~
| ⚠️ Ne modifiez jamais ce bloc directement à la main : PrestaShop le réécrit automatiquement. |
Utilisations concrètes du fichier .htaccess dans PrestaShop
⚠️ La manipulation du fichier .htaccessest déconseillée aux débutants. Même si vous avez l'expérience nécessaire, sauvegardez toujours votre fichier .htaccess avant de le modifier. |
1. Réécriture d’URL
Permet d’avoir des URLs lisibles et optimisées SEO.
RewriteEngine on RewriteRule ^t-shirts/5-tshirt-bleu.html$ product.php?id_product=5 [QSA,L]
2. Sécuriser certains fichiers sensibles
Empêche l’accès direct à des fichiers de configuration ou de logs.
<FilesMatch "\\.(tpl|ini|log|conf|sql)$"> Order Allow,Deny Deny from all </FilesMatch>
3. Forcer HTTPS
Redirige toutes les requêtes vers la version HTTPS du site.
À activer également dans le back-office : "Activer SSL" dans Paramètres > Général.
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
4. Redirections personnalisées
Déconseillé pour les débutant, cette option est utile après des suppressions de produits, refontes de catalogue, changement d’URL ou encore redirection vers une page de maintenance. Différentes syntaxes existent pour différents besoin.
Par exemple, pour rediriger vers un nouveau produit :
Redirect 301 /ancien-produit.html /nouveau-produit.html
Risques liés à une mauvaise manipulation
- Site inaccessible si erreur de syntaxe
- Problèmes de navigation (boucles de redirection, erreurs 500)
- Désactivation involontaire des modules ou du front-office
- Problèmes de SEO (pages non indexées, erreurs 404)
Bonnes pratiques à respecter
- Faites toujours une sauvegarde du fichier
.htaccessavant modification. - Ne modifiez pas le bloc généré automatiquement par PrestaShop (
# ~~start~~ ... # ~~end~~) - Utilisez un éditeur de texte fiable (VS Code, Notepad++, etc.)
- Testez les modifications dans un environnement de préproduction si possible. Il existe aussi des outils en ligne pour visualiser ces modifications.
- Pensez à vider le cache PrestaShop après modification.
Exemple de .htaccess typique dans PrestaShop
<IfModule mod_rewrite.c>
RewriteEngine on
# Redirection vers HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# URL rewriting (section générée automatiquement)
# ~~start~~ Do not remove this comment...
RewriteRule ^fr/t-shirts/5-tshirt-bleu.html$ product.php?id_product=5 [QSA,L]
# ~~end~~
# Sécurité
<FilesMatch "\\.(tpl|ini|log|conf|sql)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Redirection temporaire vers maintenance
# (décommenter si nécessaire)
# RewriteCond %{REQUEST_URI} !^/maintenance.html$
# RewriteCond %{REMOTE_ADDR} !^123\\.456\\.789\\.000$
# RewriteRule ^.*$ /maintenance.html [R=302,L]
</IfModule>
Cas particulier : Multi-boutiques et .htaccess
En mode multi-boutique, PrestaShop peut créer plusieurs blocs .htaccess pour chaque domaine ou sous-dossier. Il faut être encore plus vigilant à la cohérence des règles si vous personnalisez manuellement le fichier.