|
|
@@ -0,0 +1,257 @@
|
|
|
+# 🚨 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
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
|
+ <url>
|
|
|
+ <loc>https://www.duhaz.fr/blog/</loc>
|
|
|
+ <lastmod>2025-XX-XX</lastmod>
|
|
|
+ <changefreq>daily</changefreq>
|
|
|
+ <priority>0.5</priority>
|
|
|
+ </url>
|
|
|
+ <url>
|
|
|
+ <loc>https://www.duhaz.fr/blog/votre-article</loc>
|
|
|
+ ...
|
|
|
+ </url>
|
|
|
+ ...
|
|
|
+</urlset>
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 📞 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 !**
|