Adds a middleware to canonicalise the hostname
This commit is contained in:
		
							parent
							
								
									028e006d02
								
							
						
					
					
						commit
						55a10b750b
					
				
					 2 changed files with 25 additions and 1 deletions
				
			
		|  | @ -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. """ | ||||
| 
 | ||||
|  |  | |||
|  | @ -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" | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Christopher Neugebauer
						Christopher Neugebauer