Changeset - 55a10b750b6a
[Not reviewed]
0 2 0
Christopher Neugebauer - 7 years ago 2017-08-17 15:09:21
chrisjrn@gmail.com
Adds a middleware to canonicalise the hostname
2 files changed with 25 insertions and 1 deletions:
0 comments (0 inline, 0 general)
pinaxcon/middleware.py
Show inline comments
...
 
@@ -7,2 +7,25 @@ from django.utils.deprecation import MiddlewareMixin
 

	
 
class CanonicalHostMiddleware(MiddlewareMixin):
 
    """ Redirects to a canonical host if the current host is not the canonical
 
    host. """
 

	
 
    response_redirect_class = http.HttpResponsePermanentRedirect
 

	
 
    def process_request(self, request):
 

	
 
        canonical_host = getattr(settings, "CANONICAL_HOST", None)
 

	
 
        if not canonical_host:
 
            return
 

	
 
        host = request.get_host()
 

	
 
        if host == canonical_host:
 
            return
 

	
 
        path = request.get_full_path()
 
        redirect_url = ('%s://%s%s' % (request.scheme, canonical_host, path))
 
        return self.response_redirect_class(redirect_url)
 

	
 

	
 
class UnprependWWWMiddleware(MiddlewareMixin):
pinaxcon/settings.py
Show inline comments
...
 
@@ -25,2 +25,3 @@ DATABASES['default'].update(db_from_env)
 
ALLOWED_HOSTS = [".localhost", ".herokuapp.com", ".northbaypython.org"]
 
CANONICAL_HOST = os.environ.get("DJANGO_CANONICAL_HOST", None)
 

	
...
 
@@ -136,4 +137,4 @@ MIDDLEWARE_CLASSES = [
 
    "ssl_redirect.middleware.SSLRedirectMiddleware",
 
    "pinaxcon.middleware.CanonicalHostMiddleware",
 
    "pinaxcon.middleware.UnprependWWWMiddleware",
 

	
 
]
0 comments (0 inline, 0 general)