Pour un navigateur comme pour un moteur, /about et /about/ sont deux adresses. Si toutes deux répondent 200, vous avez deux copies de chaque page. Le remède : choisir une forme et rediriger l'autre vers elle - et la façon dont cela tourne mal est une boucle.
En choisir une
# nginx: no trailing slash
rewrite ^/(.*)/$ /$1 permanent;
# nginx: with a trailing slash
rewrite ^([^.]*[^/])$ $1/ permanent;
Le second motif exclut volontairement tout ce qui contient un point, pour que les fichiers - /logo.png, /robots.txt - ne soient pas envoyés vers /logo.png/.
La boucle
curl -sSIL https://example.com/about | grep -E '^HTTP|^location' | head -10
Plus d'une redirection dans cette sortie, ou les deux mêmes adresses en alternance, c'est la boucle. Voyez les boucles de redirection.
Les répertoires font exception
Un vrai répertoire a besoin de la barre finale : sans elle, les liens relatifs dans la page se résolvent un niveau trop haut, si bien que le CSS et les images cassent pendant que le HTML se charge. Ce n'est pas sans raison que les serveurs web redirigent pour l'ajouter.
Dire laquelle est canonique
<link rel="canonical" href="https://example.com/about">