13 pages retournant des "Soft 404"
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/
feeds.duhaz.fr/youtube/, /flux/ ou /lecture_flux/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 :
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>'
)
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),
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/
❌ Redirection externe vers feeds.duhaz.fr
❌ Domaine cible retourne des erreurs
❌ Google voit des Soft 404
❌ 13 pages problématiques
❌ Pénalité SEO potentielle
✅ Code HTTP 410 (Gone)
✅ Message clair pour Google
✅ Bloqué dans robots.txt
✅ 13 pages marquées comme disparues
✅ Pas de pénalité SEO
scripts/test_soft404.pyUtilisation :
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 :
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
En production :
curl -I https://www.duhaz.fr/youtube/tag/test/
# Doit retourner : HTTP/1.1 410 Gone
cd /path/to/your/project
git pull
source venv/bin/activate
python manage.py migrate
systemctl restart gunicorn
# Tester une URL
curl -I https://www.duhaz.fr/youtube/tag/test/
# Doit afficher :
# HTTP/1.1 410 Gone
Vérifier robots.txt
/youtube/ est bloquéDemander la suppression des URLs (optionnel)
Surveiller l'indexation
Une redirection 301 vers une autre page serait inappropriée car :
Le blocage dans robots.txt :
core/views.py - Fonction gone_view() ajoutéeduhaz_blog/urls.py - URLs mises à jour avec gone_viewstatic/robots.txt - Blocage des URLs /youtube/ et /flux/scripts/test_soft404.py - Script de test crééTous les tests doivent passer :
/youtube/*/flux/*/lecture_flux/*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.