Unbreak 301 responses
The move to werkzeug routing went pretty smooth, but one thing was broken by accident: URLs without final slash result in a 301 werkzeug.routing.RequestRedirect response. We displayed it as a generic error page rather than actually sending the redirect. Do that. One thing it does though is to skip all meddlewares, which should be OK for a 301 response, but might need rework if we decide otherwise. With this, 301 responses with lacking final slash are unbroken again. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
parent
65969d3fb7
commit
fd61aac7c7
@ -22,6 +22,7 @@ from mediagoblin.tools.routing import endpoint_to_controller
|
||||
|
||||
from werkzeug.wrappers import Request
|
||||
from werkzeug.exceptions import HTTPException, NotFound
|
||||
from werkzeug.routing import RequestRedirect
|
||||
|
||||
from mediagoblin import meddleware, __version__
|
||||
from mediagoblin.tools import common, translate, template
|
||||
@ -186,6 +187,9 @@ class MediaGoblinApp(object):
|
||||
try:
|
||||
found_rule, url_values = map_adapter.match(return_rule=True)
|
||||
request.matchdict = url_values
|
||||
except RequestRedirect as response:
|
||||
# Deal with 301 responses eg due to missing final slash
|
||||
return response(environ, start_response)
|
||||
except HTTPException as exc:
|
||||
# Stop and render exception
|
||||
return render_http_exception(
|
||||
|
Loading…
x
Reference in New Issue
Block a user