From 556faacc789c6c509f6aa429fa65612e8b80b3c0 Mon Sep 17 00:00:00 2001 From: Mandel Olaiya Date: Sun, 3 May 2026 02:16:51 +0200 Subject: [PATCH] prod: redirect apex mandelblog.com to www --- mandelstudio/middleware.py | 24 ++++++++++++++++++++++++ mandelstudio/settings/base.py | 4 ++++ 2 files changed, 28 insertions(+) create mode 100644 mandelstudio/middleware.py diff --git a/mandelstudio/middleware.py b/mandelstudio/middleware.py new file mode 100644 index 0000000..8e96b4f --- /dev/null +++ b/mandelstudio/middleware.py @@ -0,0 +1,24 @@ +from __future__ import annotations + +from django.http import HttpRequest, HttpResponsePermanentRedirect + + +class RedirectApexToWwwMiddleware: + """Redirect `mandelblog.com` to `www.mandelblog.com` for production. + + We keep this project-scoped and host-specific so staging hostnames and other + Mandel environments are unaffected. + """ + + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request: HttpRequest): + host = (request.get_host() or "").split(":")[0].lower() + if host == "mandelblog.com": + destination = request.build_absolute_uri().replace( + "://mandelblog.com", "://www.mandelblog.com", 1 + ) + return HttpResponsePermanentRedirect(destination) + return self.get_response(request) + diff --git a/mandelstudio/settings/base.py b/mandelstudio/settings/base.py index 9b00ab7..1ced570 100644 --- a/mandelstudio/settings/base.py +++ b/mandelstudio/settings/base.py @@ -116,6 +116,10 @@ if "django.middleware.locale.LocaleMiddleware" not in MIDDLEWARE: else: MIDDLEWARE.insert(0, "django.middleware.locale.LocaleMiddleware") +# Redirect production apex to `www` for a single canonical domain. +if "mandelstudio.middleware.RedirectApexToWwwMiddleware" not in MIDDLEWARE: + MIDDLEWARE.insert(0, "mandelstudio.middleware.RedirectApexToWwwMiddleware") + LANGUAGE_CODE = "nl" LANGUAGES = [ ("nl", "Nederlands"),