Source code for duck.http.middlewares.contrib.www_redirect

from duck.http.middlewares import BaseMiddleware
from duck.shortcuts import redirect
from duck.utils.urlcrack import URL
from duck.meta import Meta


[docs] class WWWRedirectMiddleware(BaseMiddleware): """ Redirects all requests that start with `www` to non-www URL. """ debug_message: str = ( "WWWRedirectMiddleware: Redirecting to non-www domain")
[docs] @classmethod def get_error_response(cls, request): """ This is not actually an error response but a redirect to `non-www` URL """ root_url = Meta.get_absolute_server_url() url = URL(root_url).innerjoin(request.fullpath).to_str() return redirect(url, permanent=True)
[docs] @classmethod def process_request(cls, request): if request.host.startswith("www."): # Request is not actually bad but that's the only way to serve response immediately # without further processing. return cls.request_bad return cls.request_ok