From: Ben Darnell Date: Sat, 12 Feb 2011 04:25:06 +0000 (-0800) Subject: Make @removeslash a no-op when applied to a request for '/'. X-Git-Tag: v1.2.0~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=88833c118f6a982e22af68cf9921cf720c4d4a27;p=thirdparty%2Ftornado.git Make @removeslash a no-op when applied to a request for '/'. This prevents a redirect loop as browsers interpret an empty redirect as a redirect to /. --- diff --git a/tornado/web.py b/tornado/web.py index 01ba81bb6..904336edd 100644 --- a/tornado/web.py +++ b/tornado/web.py @@ -954,10 +954,12 @@ def removeslash(method): if self.request.path.endswith("/"): if self.request.method in ("GET", "HEAD"): uri = self.request.path.rstrip("/") - if self.request.query: uri += "?" + self.request.query - self.redirect(uri) - return - raise HTTPError(404) + if uri: # don't try to redirect '/' to '' + if self.request.query: uri += "?" + self.request.query + self.redirect(uri) + return + else: + raise HTTPError(404) return method(self, *args, **kwargs) return wrapper