# 🚨 DÉPANNAGE : Sitemap Vide ## Problème Le sitemap à l'URL https://www.duhaz.fr/sitemap.xml est vide ou ne contient aucune URL. ## 🔍 Causes possibles 1. **django.contrib.sites non configuré** (cause la plus fréquente) 2. Aucun article publié dans la base de données 3. Migrations non appliquées 4. Serveur non redémarré après les modifications ## ✅ Solution rapide (automatique) ### Étape 1 : Exécuter le script de correction ```bash cd /Users/duhaz/projets/blog-duhaz source venv/bin/activate # Si vous avez un venv python scripts/fix_sitemap_sites.py ``` Ce script va : - ✅ Créer ou mettre à jour la table `django_site` - ✅ Configurer le domaine `www.duhaz.fr` - ✅ Vérifier la configuration ### Étape 2 : Redémarrer le serveur ```bash # En développement python manage.py runserver # En production (selon votre config) systemctl restart gunicorn # ou supervisorctl restart duhaz_blog ``` ### Étape 3 : Vérifier le sitemap Ouvrir dans le navigateur : https://www.duhaz.fr/sitemap.xml --- ## 🔧 Solution manuelle (si le script ne fonctionne pas) ### 1. Appliquer les migrations ```bash python manage.py migrate ``` ### 2. Configurer django.contrib.sites ```bash python manage.py shell ``` Dans le shell Python : ```python from django.contrib.sites.models import Site # Créer ou mettre à jour le site try: site = Site.objects.get(id=1) site.domain = 'www.duhaz.fr' site.name = 'Mr Duhaz' site.save() print("✅ Site mis à jour") except Site.DoesNotExist: Site.objects.create(id=1, domain='www.duhaz.fr', name='Mr Duhaz') print("✅ Site créé") # Vérifier print(Site.objects.all()) exit() ``` ### 3. Vérifier les articles ```bash python manage.py shell ``` ```python from blog.models import Blog # Compter les articles publiés count = Blog.objects.filter(b_publier=True).count() print(f"Articles publiés : {count}") # Afficher les premiers for blog in Blog.objects.filter(b_publier=True)[:5]: print(f"- {blog.b_titre}") exit() ``` ### 4. Redémarrer et tester ```bash # Redémarrer le serveur systemctl restart gunicorn # Tester curl https://www.duhaz.fr/sitemap.xml ``` --- ## 🧪 Diagnostic complet Pour identifier précisément le problème : ```bash python scripts/diagnose_sitemap.py ``` Ce script vérifie : - ✅ Configuration de django.contrib.sites - ✅ SITE_ID dans settings.py - ✅ Nombre d'articles publiés - ✅ Nombre de catégories - ✅ Génération du sitemap --- ## 📋 Checklist de vérification - [ ] `django.contrib.sites` dans INSTALLED_APPS - [ ] `django.contrib.sitemaps` dans INSTALLED_APPS - [ ] `SITE_ID = 1` dans settings.py - [ ] Migration `migrate` appliquée - [ ] Site créé dans la table `django_site` - [ ] Domaine = `www.duhaz.fr` - [ ] Au moins 1 article avec `b_publier=True` - [ ] Serveur redémarré - [ ] URL configurée dans `urls.py` --- ## 🔍 Vérifications manuelles ### Vérifier la table django_site ```sql -- Se connecter à la base de données python manage.py dbshell -- Vérifier la table SELECT * FROM django_site; -- Doit afficher : -- id | domain | name -- 1 | www.duhaz.fr | Mr Duhaz ``` ### Vérifier l'URL du sitemap ```bash python manage.py shell ``` ```python from django.urls import reverse print(reverse('django.contrib.sitemaps.views.sitemap')) # Doit afficher : /sitemap.xml exit() ``` --- ## ⚠️ Erreurs courantes ### Erreur : "table django_site doesn't exist" **Solution :** ```bash python manage.py migrate ``` ### Erreur : "SITE_ID not defined" **Solution :** Ajouter dans `duhaz_blog/settings.py` : ```python SITE_ID = 1 ``` ### Sitemap vide mais pas d'erreur **Causes possibles :** 1. Aucun article avec `b_publier=True` 2. Domaine du site incorrect (pas `www.duhaz.fr`) 3. Cache non vidé **Solutions :** ```bash # Vider le cache python manage.py shell >>> from django.core.cache import cache >>> cache.clear() >>> exit() # Redémarrer systemctl restart gunicorn ``` --- ## 🎯 Test final Après correction, le sitemap doit contenir : ```xml https://www.duhaz.fr/blog/ 2025-XX-XX daily 0.5 https://www.duhaz.fr/blog/votre-article ... ... ``` --- ## 📞 Support Si le problème persiste : 1. Exécuter `python scripts/diagnose_sitemap.py` 2. Consulter les logs Django 3. Vérifier les permissions de la base de données 4. S'assurer que le serveur a bien redémarré --- ## 📚 Scripts disponibles - `scripts/diagnose_sitemap.py` - Diagnostic complet - `scripts/fix_sitemap_sites.py` - Correction automatique - `scripts/generate_sitemap_preview.py` - Génération test --- **La cause la plus fréquente est django.contrib.sites non configuré.** **Exécutez `python scripts/fix_sitemap_sites.py` pour corriger automatiquement !**