Changeset - 55a10b750b6a
[Not reviewed]
0 2 0
Christopher Neugebauer - 4 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
...
 
@@ -5,6 +5,29 @@ from django import http
 
from django.conf import settings
 
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):
 
    """ Unprepends www if necessary. """
 

	
pinaxcon/settings.py
Show inline comments
...
 
@@ -23,6 +23,7 @@ db_from_env = dj_database_url.config()
 
DATABASES['default'].update(db_from_env)
 

	
 
ALLOWED_HOSTS = [".localhost", ".herokuapp.com", ".northbaypython.org"]
 
CANONICAL_HOST = os.environ.get("DJANGO_CANONICAL_HOST", None)
 

	
 
# Local time zone for this installation. Choices can be found here:
 
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
...
 
@@ -134,8 +135,8 @@ MIDDLEWARE_CLASSES = [
 
    "reversion.middleware.RevisionMiddleware",
 
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
 
    "ssl_redirect.middleware.SSLRedirectMiddleware",
 
    "pinaxcon.middleware.CanonicalHostMiddleware",
 
    "pinaxcon.middleware.UnprependWWWMiddleware",
 

	
 
]
 

	
 
ROOT_URLCONF = "pinaxcon.urls"
0 comments (0 inline, 0 general)