--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/django/contrib/redirects/middleware.py Fri Jul 18 18:22:23 2008 +0000
@@ -0,0 +1,27 @@
+from django.contrib.redirects.models import Redirect
+from django import http
+from django.conf import settings
+
+class RedirectFallbackMiddleware(object):
+ def process_response(self, request, response):
+ if response.status_code != 404:
+ return response # No need to check for a redirect for non-404 responses.
+ path = request.get_full_path()
+ try:
+ r = Redirect.objects.get(site__id__exact=settings.SITE_ID, old_path=path)
+ except Redirect.DoesNotExist:
+ r = None
+ if r is None and settings.APPEND_SLASH:
+ # Try removing the trailing slash.
+ try:
+ r = Redirect.objects.get(site__id__exact=settings.SITE_ID,
+ old_path=path[:path.rfind('/')]+path[path.rfind('/')+1:])
+ except Redirect.DoesNotExist:
+ pass
+ if r is not None:
+ if r.new_path == '':
+ return http.HttpResponseGone()
+ return http.HttpResponsePermanentRedirect(r.new_path)
+
+ # No redirect was found. Return the response.
+ return response