Pour passer PrestaShop en HTTPS sans boucle de redirection, deux réglages SSL doivent être activés, puis les liens codés en http:// doivent être corrigés. Si un reverse proxy termine le chiffrement devant la boutique, PrestaShop doit aussi lire le protocole transmis par le proxy. Les sources disponibles sont surtout des fils de forum : vérifiez chaque réglage sur votre version avant de l’appliquer.
Avant de commencer
- Vérifiez le certificat. Le certificat doit être valide pour le domaine exact, avec ou sans
www. Notre article sur l’installation de Let’s Encrypt détaille cette étape. - Sauvegardez les fichiers et la base de données.
- Faites la bascule sur une copie avant la production.
Ce qui cause le contenu mixte
Le contenu mixte apparaît quand une page HTTPS charge une image, un script ou un lien en HTTP. Les causes les plus fréquentes, selon les retours de la communauté :
- des images ajoutées aux pages CMS quand la boutique était encore en HTTP ;
- des liens codés en dur dans un template de thème ou un fichier de module ;
- une URL de base de la boutique restée en HTTP.
Étape 1 : activer SSL dans les réglages
Les fils de forum citent deux options, PS_SSL_ENABLED et PS_SSL_ENABLED_EVERYWHERE, à régler dans Paramètres de la boutique > Général, ou en base de données. Vérifiez aussi les champs « Domaine de la boutique » et « Domaine SSL », dans la section URL de la boutique.
Attention : les modules de paiement peuvent contrôler ces réglages séparément. Vérifiez-les après la bascule, même si la boutique semble fonctionner.
Étape 2 : corriger les liens en dur
Cherchez http:// dans les contenus CMS, les templates du thème et les fichiers de modules :
- les images des pages CMS se modifient dans le menu Préférences > CMS ;
- les liens codés en dur se corrigent dans le fichier concerné, après sauvegarde.
Ne modifiez pas les fichiers du cœur de PrestaShop : une mise à jour écraserait vos corrections.
Étape 3 : éviter les boucles de redirection
Une boucle apparaît quand PrestaShop croit que la requête est en HTTP alors qu’elle arrive en HTTPS. C’est le cas typique derrière un reverse proxy, comme Traefik, Nginx ou Caddy : le proxy reçoit le HTTPS, mais la boutique ne voit que du HTTP.
Un fil de forum sur PrestaShop 9 décrit une solution : transmettre le protocole dans un en-tête du proxy, puis demander à PrestaShop de le lire. La même source précise que classes/Link.php est écrasé à chaque mise à jour : ne l’éditez pas.
Évitez aussi de cumuler une redirection HTTPS dans le .htaccess et une redirection gérée par PrestaShop : elles peuvent se contredire. Si vous exploitez aussi un WordPress, notre article sur la redirection HTTP vers HTTPS sous WordPress couvre ce cas séparément.
Vérifications après la bascule
- Parcourez les pages principales, le tunnel de commande et le back-office, sans avertissement de sécurité dans le navigateur.
- Vérifiez que la redirection HTTP vers HTTPS fonctionne une seule fois, sans boucle.
- Testez un paiement de bout en bout sur une commande de test.
Questions fréquentes
Faut-il une redirection HTTP vers HTTPS dans le .htaccess ?
Cela dépend de votre installation. Si PrestaShop gère déjà la redirection, une seconde règle peut provoquer une boucle. Testez sur une copie.
Les réglages suffisent-ils à retirer le contenu mixte ?
Non. Les réglages changent les liens générés, mais pas ceux qui sont codés en dur dans le contenu ou les templates.
Pourquoi le paiement ne fonctionne-t-il plus après le passage en HTTPS ?
Un module de paiement peut vérifier ses propres réglages SSL. Contrôlez sa configuration et sa documentation.
Sources
- Fil de forum sur PrestaShop 9 derrière Traefik, redirections et contenu mixte : forum.prestashop.com
- Retours de la communauté sur le contenu mixte : prestashop.com/forums
- Aucun article officiel du centre d’aide n’a été trouvé sur ce sujet : les étapes viennent de témoignages et doivent être validées sur votre version.