Skip to content

Commit 47f60e4

Browse files
committed
* Add leading "/" to url.
* Remove extra "/" in case the database has extra leading or trailing slashes. * Catch KeyError, not IndexError, since that's what gets thrown in the case I was thinking about. - Legacy-Id: 335
1 parent f1251ca commit 47f60e4

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

ietf/redirects/views.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def redirect(request, path="", script=""):
1010
redir = Redirect.objects.get(cgi=script)
1111
except Redirect.DoesNotExist:
1212
raise Http404
13-
url = redir.url + "/"
13+
url = "/" + redir.url + "/"
1414
(rest, remove) = (redir.rest, redir.remove)
1515
try:
1616
cmd = redir.commands.all().get(command=request.REQUEST['command'])
@@ -21,14 +21,16 @@ def redirect(request, path="", script=""):
2121
remove = cmd.suffix.remove
2222
except Command.DoesNotExist:
2323
pass # it's ok, there's no more-specific request.
24-
except IndexError:
24+
except KeyError:
2525
pass # it's ok, request didn't have 'command'.
2626
try:
2727
url += rest % request.REQUEST
2828
except:
2929
# rest had something in it that request didn't have, so just
3030
# redirect to the root of the tool.
3131
pass
32+
# Be generous in what you accept: collapse multiple slashes
33+
url = re.sub(r'/+', '/', url)
3234
if remove:
3335
url = re.sub(re.escape(remove) + "/?$", "", url)
3436
return HttpResponseRedirect(url)

0 commit comments

Comments
 (0)