🖼️

Image de remplacement sur 404

cafe_default404image · v1.1.0 · AGPL-3.0-or-later

Une image absente fait rendre la page 404 complète : 51 ko de HTML et une session ouverte, par visuel manquant. Ce module répond une image minuscule et sort — 971 octets, sans session, mesuré sur PrestaShop 9.0.3.

agpl-3.0prestashop-9performance404imageslibre

Ce que ce module fait, et ce qu'il refuse

  • ✓Une image absente répond 404 avec une image, pas avec 51 ko de HTML — mesuré : 971 octets
  • ✓Aucun Set-Cookie sur ces réponses : elles redeviennent cachables
  • ✓Un .svg reçoit un vrai SVG valide, jamais un GIF annoncé sous un type SVG
  • ✓Scripts, styles et polices : 404 au corps vide, et un interrupteur séparé pour les couper
  • ✓X-Robots-Tag: noindex — un contrôleur de liens voit que l'image n'existe pas
  • ✓Image de remplacement au choix dans img/, ou un pixel transparent qui ne déforme aucune mise en page
  • ✓Le back-office refuse un chemin hostile et NOMME la raison, au lieu d'enregistrer en silence
  • ✓Durée de cache réglable de 0 à 3600 s
  • ✓Aucune table créée ; désinstallé, le module retire ses quatre réglages
  • ✓37 vérifications livrées avec le module, rejouables sans PHPUnit ni base

Le problème

Un visuel absent du disque ne devrait pas coûter un rendu de page complet.

PrestaShop renvoie vers son point d'entrée toute URL qui ne correspond à aucun fichier. Pour une image manquante, il instancie donc le contrôleur « page introuvable », qui rend la page 404 entière : le thème, l'en-tête, le pied, les requêtes de menu, de panier, de devises.

Une page qui demande cinquante visuels absents fait rendre cinquante fois la page 404 — environ 2,5 Mo de HTML et cinquante sessions ouvertes.

Le gain, mesuré

Sur PrestaShop 9.0.3 neuf, même boutique, même URL, module désinstallé puis installé :

sans le moduleavec le module
une image absente50 858 à 51 053 octets de HTML971 octets, ou 43 sans image de remplacement
un script, un style, une police50 858 à 51 053 octets de HTML0 octet
cookie de session envoyé1 par requêteaucun
mise en cacheinterditeune minute
consigne aux moteursabsentene pas indexer

Le module se greffe sur la première ligne de l'initialisation du contrôleur de boutique. Si l'URL demandait une image, il répond une image minuscule et sort : ni thème, ni devises, ni une seule requête du rendu.

Ce qu'il fait exactement

URL demandéeRéponse
.png, .jpg, .jpeg, .gif, .webp, .avif, .ico, .bmp404 et votre image de remplacement, sinon un pixel transparent de 43 octets
.svg404 et un SVG vide et valide — jamais un GIF annoncé comme un SVG
.js, .css, .map, .woff, .woff2, .ttf, .eot, .otf404, corps vide
tout le restele module ne fait rien : la page 404 habituelle s'affiche

La réponse est un 404, pas un 200 : l'image n'existe pas, et un moteur de recherche comme un contrôleur de liens doit pouvoir le voir.

Ce qu'il couvre, et ce qu'il ne couvre pas

Il agit sur les images de catégorie, de page CMS, de marque, de fournisseur et de boutique, les URL d'image directes — celles qu'emploient un contenu éditorial, un export, un courriel ou un flux — et les scripts, styles, polices et cartes de source.

Il n'agit pas sur les images produit demandées par leur URL réécrite : PrestaShop sert déjà son propre substitut pour celles-là. Mesuré, un 200 de 64 585 octets. Le module ne s'en mêle pas.

Il ne voit pas les requêtes que le serveur web refuse avant PHP. Les dossiers img/, js/ et themes/ de PrestaShop portent chacun une liste d'extensions autorisées, et Apache confronte cette liste au premier segment de chemin manquant, pas au nom de fichier demandé. Un dossier intermédiaire absent donne donc un segment sans extension, donc un 403 qui n'atteint jamais le module.

Mesuré sur PrestaShop 9.0.3 : /themes/classic/assets/img/absent.jpg répond 403 parce que assets/img n'existe pas, là où /themes/classic/assets/css/absent.css — dont tous les dossiers existent — répond bien 404 avec un corps vide. Rien à corriger dans le module : c'est la configuration du serveur, et elle répond déjà court (277 octets, sans session).

Réglages

Back-office → Modules → *Image de remplacement sur 404* → Configurer.

  • Répondre aux images et aux scripts, styles et polices : deux

interrupteurs indépendants.

  • Image de remplacement : un chemin dans le dossier img/ de la boutique,

par exemple 404.gif ou cms/indisponible.png. Laissé vide, le module répond un pixel transparent qui ne déforme aucune mise en page — une balise d'image garde les dimensions que le style lui donne.

Si le chemin est refusé, le back-office le dit et nomme la raison, au lieu d'enregistrer en silence. Sont refusés : une sortie du dossier img/ (../, lien symbolique, chemin absolu — c'est le système de fichiers qui tranche, pas une lecture de la chaîne), une extension qui n'est pas une image, un .svg (il peut porter du script), un fichier illisible ou absent, et tout caractère de contrôle.

  • Durée de cache : réglable de 0 à 3600 secondes. Une valeur longue fait

attendre un visiteur après la réparation d'un visuel ; zéro interdit la mise en cache.

Le module ne crée aucune table. Désinstallé, il retire ses quatre réglages.

Installation

Back-office → Modules → Installer un module → déposer le .zip, puis Configurer.

Ce que la licence exige de vous

Ce module est sous AGPL-3.0-or-later. Installé sans modification, vous n'avez rien à publier. Modifié et servi à vos visiteurs, vous devez leur offrir la source de ce module modifié — jamais celle de votre boutique, de votre thème, ni du cœur de PrestaShop. Le fichier NOTICE de l'archive porte les attributions exactes.

Le module est gratuit. Une adresse e-mail suffit.

Sans compte à créer, et la lettre d'information reste facultative.

Avis vérifiés

Ce que disent nos clients

5.0 / 5

33 avis clients

Nous travaillons avec Alexandre depuis quelques mois et sommes ravis de son a

Nous travaillons avec Alexandre depuis quelques mois et sommes ravis de son accompagnement. Alexandre comprend parfaitement les enjeux et problématiques liés à notre activité et parvient, en réponse, à nous apporter des solutions techniques et fonctionnelles en respectant coûts et délais.

Office

MONOGRAM

Malt

La résolution de mes problèmes à été rapide et efficace, je recommande :)

La résolution de mes problèmes à été rapide et efficace, je recommande :).

Marine

MES-Distribution

Malt

Super

Super

Jl

Kaigan

Malt

Au Top

Au Top. tout simplement

Elite Cbd

Canna Elite Europe Ltd

Malt

Configuration d''un VPS et migration réalisée avec succès, bons conseils, dia

Configuration d'un VPS et migration réalisée avec succès, bons conseils, diagnostique rapide et efficace de nos problèmes. Je recommande.

Lorie

GRIIN outdoor

Malt

Toujours aussi clair et clairvoyant

Toujours aussi clair et clairvoyant... ;) Un plaisir de travailler avec Alexandre

Elite Cbd

Canna Elite Europe Ltd

Malt