1
0

PROBLEME_3_SOFT_404_RESOLUES.md 6.4 KB

Résolution du Problème #3 : Soft 404 (13 pages)

🎯 Problème identifié

13 pages retournant des "Soft 404"

URLs concernées :

https://duhaz.fr/youtube/tag/independants/
https://duhaz.fr/flux/hier/?pages=9
https://duhaz.fr/youtube/tag/fallout/
https://duhaz.fr/youtube/tag/jd/
https://duhaz.fr/flux/hier/?pages=2
https://duhaz.fr/youtube/tag/metrage/
https://duhaz.fr/youtube/outils/vignettes/
https://duhaz.fr/youtube/tag/360/
https://duhaz.fr/youtube/tag/2017/
https://duhaz.fr/youtube/tag/gym/
https://duhaz.fr/youtube/#/
https://duhaz.fr/youtube/tag/ark/
https://duhaz.fr/youtube/tag/fun/

Causes :

  1. Anciennes redirections externes vers feeds.duhaz.fr
  2. Domaine cible non maintenu ou retournant des erreurs
  3. Google les voit comme Soft 404 (page vide ou erreur)
  4. Toutes commencent par /youtube/, /flux/ ou /lecture_flux/

✅ Solutions implémentées

1. Code HTTP 410 (Gone)

Au lieu de rediriger vers un domaine externe qui n'existe plus, nous retournons maintenant un code HTTP 410 (Gone) qui indique à Google que ces ressources n'existent plus définitivement.

Avantages du 410 vs 404 :

  • 410 Gone : "Cette ressource n'existe plus et ne reviendra jamais"
  • 404 Not Found : "Cette ressource n'est pas trouvée (mais pourrait revenir)"
  • Google supprime plus rapidement les 410 de son index

2. Vue HTTP 410 créée

Fichier modifié : core/views.py

Nouvelle fonction ajoutée :

def gone_view(request, path=None):
    """
    Vue HTTP 410 Gone pour les anciennes URLs /youtube/ et /flux/
    """
    from django.http import HttpResponseGone
    return HttpResponseGone(
        '<h1>410 Gone</h1>'
        '<p>Cette ressource n'existe plus...</p>'
    )

3. URLs mises à jour

Fichier modifié : duhaz_blog/urls.py

AVANT (problématique) :

re_path(r'youtube/(?P<path>.*)$', 
    RedirectView.as_view(url='https://feeds.duhaz.fr/flux/%(path)s')
),

APRÈS (optimisé) :

# HTTP 410 Gone pour les anciennes URLs
re_path(r'youtube/(?P<path>.*)$', core.gone_view),
re_path(r'flux/(?P<path>.*)$', core.gone_view),
re_path(r'lecture_flux/(?P<path>.*)$', core.gone_view),

4. Robots.txt mis à jour

Fichier modifié : static/robots.txt

Ajout de règles pour bloquer l'exploration de ces URLs :

# Bloquer les anciennes URLs
Disallow: /youtube/
Disallow: /flux/
Disallow: /lecture_flux/

📊 Comparaison avant/après

AVANT

❌ Redirection externe vers feeds.duhaz.fr
❌ Domaine cible retourne des erreurs
❌ Google voit des Soft 404
❌ 13 pages problématiques
❌ Pénalité SEO potentielle

APRÈS

✅ Code HTTP 410 (Gone)
✅ Message clair pour Google
✅ Bloqué dans robots.txt
✅ 13 pages marquées comme disparues
✅ Pas de pénalité SEO

🧪 Tests et validation

Script de test créé : scripts/test_soft404.py

Utilisation :

cd /Users/duhaz/projets/blog-duhaz

# Modifier BASE_URL dans le script pour tester en local
# BASE_URL = "http://localhost:8000"

python3 scripts/test_soft404.py

Le script vérifie :

  • Code HTTP 410 sur toutes les URLs
  • Message approprié retourné
  • Pas de redirection

Tests manuels

  1. En local :

    python manage.py runserver
    
    # Dans un autre terminal
    curl -I http://localhost:8000/youtube/tag/test/
    # Doit retourner : HTTP/1.1 410 Gone
    
  2. En production :

    curl -I https://www.duhaz.fr/youtube/tag/test/
    # Doit retourner : HTTP/1.1 410 Gone
    

🚀 Déploiement en production

Étape 1 : Déployer les modifications

cd /path/to/your/project
git pull
source venv/bin/activate
python manage.py migrate
systemctl restart gunicorn

Étape 2 : Vérifier les codes 410

# Tester une URL
curl -I https://www.duhaz.fr/youtube/tag/test/

# Doit afficher :
# HTTP/1.1 410 Gone

Étape 3 : Google Search Console

  1. Vérifier robots.txt

    • Aller dans Google Search Console
    • Exploration → robots.txt
    • Vérifier que /youtube/ est bloqué
  2. Demander la suppression des URLs (optionnel)

    • Index → Suppressions
    • Nouvelle demande
    • Supprimer temporairement les URLs /youtube/*
  3. Surveiller l'indexation

    • Les erreurs Soft 404 devraient disparaître dans 2-4 semaines
    • Google comprendra que les pages n'existent plus

📈 Résultats attendus

Court terme (1-2 semaines)

  • Google détecte les codes 410
  • Arrêt de l'exploration de ces URLs

Moyen terme (2-4 semaines)

  • Les 13 Soft 404 disparaissent de la Search Console
  • Pages supprimées de l'index Google

Long terme (1-3 mois)

  • Index Google nettoyé
  • Amélioration du crawl budget
  • Meilleure santé SEO globale

⚠️ Notes importantes

Différence 410 vs 404

  • 410 Gone : Utilisé ici car les ressources n'existeront JAMAIS
  • 404 Not Found : Pour des ressources temporairement indisponibles
  • Google traite les 410 plus rapidement que les 404

Pourquoi ne pas utiliser 301 ?

Une redirection 301 vers une autre page serait inappropriée car :

  • Ces URLs sont spécifiques (tags YouTube, flux RSS)
  • Pas d'équivalent sur le blog actuel
  • Rediriger vers l'accueil = mauvaise expérience utilisateur

Robots.txt

Le blocage dans robots.txt :

  • Empêche Google de gaspiller du crawl budget
  • N'empêche pas les 410 de fonctionner si Google les trouve
  • Complète la solution HTTP 410

🔗 Fichiers modifiés

  1. core/views.py - Fonction gone_view() ajoutée
  2. duhaz_blog/urls.py - URLs mises à jour avec gone_view
  3. static/robots.txt - Blocage des URLs /youtube/ et /flux/
  4. scripts/test_soft404.py - Script de test créé

📚 Ressources

✅ Validation

Tous les tests doivent passer :

  • Code 410 sur /youtube/*
  • Code 410 sur /flux/*
  • Code 410 sur /lecture_flux/*
  • Robots.txt bloque ces URLs
  • Message HTML explicite
  • Aucune redirection

🎉 Conclusion

Les 13 pages en Soft 404 sont maintenant correctement gérées avec un code HTTP 410 (Gone), ce qui indique clairement à Google que ces ressources n'existent plus définitivement.

Impact SEO : Positif - Nettoyage de l'index et amélioration de la santé du site.