Je me suis rendu compte hier d'un petit oubli : je n'ai pas ajouté de fichier .htaccess pour définir l'emplacement de ma page 404.
Forcément, durant mes dev en local, la 404 marchait car le serveur de test intégrait automatiquement sa gestion…
😖 Oui, je suis tombé dans le piège du "Ça marche sur ma machine !"
Bref, juste besoin d'ajouter un .htaccess sur le serveur, c'est rapide à faire, ça tient en une courte ligne :
ErrorDocument 404 /404.html
Une correction rapide mais pas très pérenne. Pour m'assurer que ce correctif perdure, je dois l'intégrer à mon contenu généré par Eleventy + le versionner. Sinon,il risque de sauter au gré d'une réinstallation du projet ou d'un copier/coller dans le client FTP.
Mais le problème, c'est que par défaut Eleventy ne va pas interpréter ou copier ce fichier .htaccess et celui-ci reste confiné dans mon dossier content.
Je vois deux possibilités :
- Ajouter une règle dans mon fichier de configuration pour copier/coller mes fichiers
.htaccessdans le dossier__site(comme je le fais déjà pour les images ou d'autres assets) - Utiliser un fichier Liquid pour le générer
J'opte pour la deuxième car :
- Elle est simple à appliquer (pas beaucoup plus lourde que d'écrire directement le fichier)
- Elle m'évite d'avoir à vérifier si Eleventy me permet bien faire de la copie passthrough sur des fichiers (et pas seulement des dossiers comme je le fais pour l'instant) et en respectant l'arborescence.
- Elle me permet (si je le souhaite) de "templatiser" mes
.htaccess
Il me suffit de créer un fichier htaccess.liquid (peu importe le nom en vrai) avec le contenu suivant :
---
permalink: .htaccess
layout: false
---
ErrorDocument 404 /404.html
Avertissement
Attention aux templates
Comme j'applique par défaut mon template HTML "base" sur tout ce qui est généré par Eleventy, il faut que je spécifie explicitement ici que je ne veux aucun layout. Sans ça, mon fichier .htaccess va se retrouver avec tout un pataquès de balises HTML superflues et planter mon serveur 😱
C'est réglé !
J'ai maintenant un fichier .htaccess pérenne dans mon projet.
Astuce
Pages 404 personnalisées
Une idée m'est venu en travaillant là-dessus : ajouter d'autres pages 404 dans les dossiers /journal et /articles qui proposeraient de retourner à la liste des entrées de journal ou articles, au lieu de renvoyer vers la page d’accueil. Ce serait plus pertinent.
Ils pourraient aussi pousser vers le dernier article. Idée à creuser.