Redirection de www vers non-www (ou l'inverse) sur Django & Heroku
Redirection de www vers non-www (ou l'inverse) sur Django & Heroku
Pour garantir une expérience utilisateur cohérente et améliorer le référencement, il est recommandé de choisir une version principale de votre domaine (avec ou sans www) et de rediriger automatiquement l'autre vers celle-ci.
Pourquoi faire cette redirection ?
- Éviter le contenu dupliqué pour Google
- Améliorer la cohérence de marque
- Centraliser les statistiques d'audience
- Optimiser le SEO
Configuration DNS chez Gandi
Voici la configuration recommandée pour votre domaine :
- www.bolibana.net : CNAME vers
cubed-parasaurolophus-3z5g995zs6sbrb042nmfip48.herokudns.com - bolibana.net : A record vers
76.76.21.21(IP Heroku pour l'apex)
Ajouter les domaines sur Heroku
Exécutez ces commandes dans votre terminal :
heroku domains:add bolibana.net
heroku domains:add www.bolibana.net
Redirection automatique dans Django
Pour forcer la redirection de www vers non-www (ou l'inverse), ajoutez ce middleware dans votre projet :
# middleware.py
from django.http import HttpResponsePermanentRedirect
class WwwRedirectMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
host = request.get_host()
if host.startswith('www.'):
return HttpResponsePermanentRedirect(
request.build_absolute_uri().replace('://www.', '://', 1)
)
return self.get_response(request)
Ajoutez-le dans settings.py juste après les middlewares de sécurité :
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
# ...
'votre_app.middleware.WwwRedirectMiddleware',
# ...
]
Configuration dans ALLOWED_HOSTS
Assurez-vous d'avoir les deux versions dans vos paramètres Django :
ALLOWED_HOSTS = [
'localhost',
'127.0.0.1',
'.herokuapp.com',
'bolibana.net',
'www.bolibana.net',
]
Vérification de la propagation DNS
Après avoir modifié les enregistrements DNS, utilisez cette commande pour vérifier que tout fonctionne :
heroku domains:wait bolibana.net
Avantages de cette approche
- SEO optimisé : Évite le contenu dupliqué
- UX cohérente : Les utilisateurs arrivent toujours au bon endroit
- Maintenance simplifiée : Une seule version à gérer
- Statistiques unifiées : Toutes les visites sont centralisées
Conclusion
En combinant une bonne configuration DNS, l'ajout des domaines sur Heroku et un middleware Django, vous garantissez que vos visiteurs arrivent toujours sur la bonne version de votre site. Cette approche est bénéfique pour l'image de marque et le référencement naturel.
Note : La propagation DNS peut prendre jusqu'à 24 heures, mais elle est généralement effective en quelques minutes.