Comprendre et modifier le fichier .htaccess de PrestaShop

HelpCenter

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.html au lieu de index.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

  1. Faites toujours une sauvegarde du fichier .htaccess avant modification.
  2. Ne modifiez pas le bloc généré automatiquement par PrestaShop (# ~~start~~ ... # ~~end~~)
  3. Utilisez un éditeur de texte fiable (VS Code, Notepad++, etc.)
  4. Testez les modifications dans un environnement de préproduction si possible. Il existe aussi des outils en ligne pour visualiser ces modifications.
  5. 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.