Examiner les parcours de redirection

Sept exemples HTTP locaux testés, sans exploration de votre site. Le lien source et les réponses sont séparés. Aucun moteur ni index de backlinks n’est interrogé.

Les compteurs portent sur les requêtes GET affichées après la page source. La limite de six appartient au client pédagogique local, pas à Googlebot. Une réponse finale peut être une erreur ; 200 ne prouve pas la pertinence.

R01 · Page déplacée sans correspondance

Résultat attendu
Le guide ancien a un remplacement pertinent à /guide, mais répond 404.
Action proposée
Ajouter une redirection permanente vers ce remplacement.
Critère de validation
La même URL répond 301, puis /guide répond 200 avec le contenu attendu.

Lien de la page source · inchangé

GET /publisher/r1
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r1/old-guide">Reference</a></body></html>

Avant

Requêtes après la page source: 1 · Réponses de redirection: 0

GET /r1/old-guide
HTTP 404
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Unavailable</title></head><body><h1>Not available</h1></body></html>

Réponse finale atteinte

Après

Requêtes après la page source: 2 · Réponses de redirection: 1

GET /r1/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Réponse finale atteinte

R02 · Chaîne fonctionnelle avec détour

Résultat attendu
Le guide est atteint via /middle ; cette étape est évitable.
Action proposée
Viser directement /guide et conserver les règles intermédiaires encore utiles.
Critère de validation
Trois requêtes deviennent deux, sans changer le guide final ni le lien source.

Lien de la page source · inchangé

GET /publisher/r2
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r2/old-guide">Reference</a></body></html>

Avant

Requêtes après la page source: 3 · Réponses de redirection: 2

GET /r2/old-guide
HTTP 301
Location: /middle
Cache-Control: no-store

GET /middle
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Réponse finale atteinte

Après

Requêtes après la page source: 2 · Réponses de redirection: 1

GET /r2/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Réponse finale atteinte

R03 · Deux URL forment une boucle

Résultat attendu
L’ancienne URL et /r3/loop se renvoient mutuellement sans contenu final.
Action proposée
Remplacer la règle initiale par un accès direct à /guide.
Critère de validation
L’arrêt pour répétition disparaît ; les réponses observées sont 301 puis 200.

Lien de la page source · inchangé

GET /publisher/r3
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r3/old-guide">Reference</a></body></html>

Avant

Requêtes après la page source: 2 · Réponses de redirection: 2

GET /r3/old-guide
HTTP 301
Location: /r3/loop
Cache-Control: no-store

GET /r3/loop
HTTP 301
Location: /r3/old-guide
Cache-Control: no-store

URL répétée : arrêt avant une nouvelle requête · /r3/old-guide

Après

Requêtes après la page source: 2 · Réponses de redirection: 1

GET /r3/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Réponse finale atteinte

R04 · Accueil accessible mais destination incorrecte

Résultat attendu
Le lecteur attend un guide ; /home propose une navigation générale. Les deux phases finissent en 200.
Action proposée
Viser le /guide pertinent plutôt qu’une page de succès quelconque.
Critère de validation
Vérifier chemin et contenu. Aucune classification soft 404 de Google n’a été observée.

Lien de la page source · inchangé

GET /publisher/r4
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r4/old-guide">Reference</a></body></html>

Avant

Requêtes après la page source: 2 · Réponses de redirection: 1

GET /r4/old-guide
HTTP 301
Location: /home
Cache-Control: no-store

GET /home
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Home</title></head><body><h1>Home</h1><p>General navigation, no replacement guide.</p></body></html>

Réponse finale atteinte

Après

Requêtes après la page source: 2 · Réponses de redirection: 1

GET /r4/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Réponse finale atteinte

R05 · Contenu retiré sans équivalent

Résultat attendu
Le contenu est définitivement supprimé ; /home n’en remplit pas la fonction.
Action proposée
Renvoyer 410 pour ce cas et retirer les références internes obsolètes.
Critère de validation
L’URL répond 410 ; aucun remplacement ni gain de classement n’est inventé.

Lien de la page source · inchangé

GET /publisher/r5
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r5/old-guide">Reference</a></body></html>

Avant

Requêtes après la page source: 2 · Réponses de redirection: 1

GET /r5/old-guide
HTTP 301
Location: /home
Cache-Control: no-store

GET /home
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Home</title></head><body><h1>Home</h1><p>General navigation, no replacement guide.</p></body></html>

Réponse finale atteinte

Après

Requêtes après la page source: 1 · Réponses de redirection: 0

GET /r5/old-guide
HTTP 410
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Unavailable</title></head><body><h1>Not available</h1></body></html>

Réponse finale atteinte

R06 · Déplacement provisoire déclaré permanent

Résultat attendu
Le service initial doit revenir ; /holding est un simple avis temporaire.
Action proposée
Utiliser 302 pour ce GET et prévoir le rétablissement du service.
Critère de validation
Le même avis est atteint via 302 au lieu de 301 ; caches antérieurs et traitement de recherche restent à vérifier.

Lien de la page source · inchangé

GET /publisher/r6
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r6/old-guide">Reference</a></body></html>

Avant

Requêtes après la page source: 2 · Réponses de redirection: 1

GET /r6/old-guide
HTTP 301
Location: /holding
Cache-Control: no-store

GET /holding
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Temporary notice</title></head><body><h1>Temporary notice</h1><p>The original service is expected to return.</p></body></html>

Réponse finale atteinte

Après

Requêtes après la page source: 2 · Réponses de redirection: 1

GET /r6/old-guide
HTTP 302
Location: /holding
Cache-Control: no-store

GET /holding
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Temporary notice</title></head><body><h1>Temporary notice</h1><p>The original service is expected to return.</p></body></html>

Réponse finale atteinte

R07 · Correspondance permanente correcte inchangée

Résultat attendu
L’ancien guide atteint déjà son équivalent avec une seule 301.
Action proposée
Conserver la règle comme contrôle.
Critère de validation
Les preuves avant et après sont identiques ; aucune correction inutile n’est annoncée.

Lien de la page source · inchangé

GET /publisher/r7
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r7/old-guide">Reference</a></body></html>

Avant

Requêtes après la page source: 2 · Réponses de redirection: 1

GET /r7/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Réponse finale atteinte

Après

Requêtes après la page source: 2 · Réponses de redirection: 1

GET /r7/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Réponse finale atteinte

Exécuter les cas

Examiner les parcours de redirection

Sept exemples HTTP locaux testés, sans exploration de votre site. Le lien source et les réponses sont séparés. Aucun moteur ni index de backlinks n’est interrogé.

Python 3.10 ou ultérieur. Décompressez le ZIP localement. La vérification démarre un serveur temporaire de bouclage, teste chaque cas, affiche du JSON puis s’arrête. Aucun site externe n’est contacté.

python3 redirect_lab.py --verify

Arrêtez le serveur avec Ctrl+C puis relancez-le avec --phase after pour inspecter les mêmes URL après correction. Choisissez un autre port local si 8766 est occupé.

python3 redirect_lab.py --phase before --port 8766

python3 redirect_lab.py --phase after --port 8766

http://127.0.0.1:8766/publisher/r1

http://127.0.0.1:8766/r1/old-guide

http://127.0.0.1:8766/publisher/r2

http://127.0.0.1:8766/r2/old-guide

http://127.0.0.1:8766/publisher/r3

http://127.0.0.1:8766/r3/old-guide

http://127.0.0.1:8766/publisher/r4

http://127.0.0.1:8766/r4/old-guide

http://127.0.0.1:8766/publisher/r5

http://127.0.0.1:8766/r5/old-guide

http://127.0.0.1:8766/publisher/r6

http://127.0.0.1:8766/r6/old-guide

http://127.0.0.1:8766/publisher/r7

http://127.0.0.1:8766/r7/old-guide

Les compteurs portent sur les requêtes GET affichées après la page source. La limite de six appartient au client pédagogique local, pas à Googlebot. Une réponse finale peut être une erreur ; 200 ne prouve pas la pertinence.

Les commandes et chemins sont des identifiants techniques ; le rapport est traduit.

Indexation, sélection canonique, trafic et classement ne sont pas mesurés. Aucun pourcentage d’autorité transférée n’est calculé.

Indexation, sélection canonique, trafic et classement ne sont pas mesurés. Aucun pourcentage d’autorité transférée n’est calculé.