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.wrappers import Request
|
||||||
from werkzeug.exceptions import HTTPException, NotFound
|
from werkzeug.exceptions import HTTPException, NotFound
|
||||||
|
from werkzeug.routing import RequestRedirect
|
||||||
|
|
||||||
from mediagoblin import meddleware, __version__
|
from mediagoblin import meddleware, __version__
|
||||||
from mediagoblin.tools import common, translate, template
|
from mediagoblin.tools import common, translate, template
|
||||||
@ -186,6 +187,9 @@ class MediaGoblinApp(object):
|
|||||||
try:
|
try:
|
||||||
found_rule, url_values = map_adapter.match(return_rule=True)
|
found_rule, url_values = map_adapter.match(return_rule=True)
|
||||||
request.matchdict = url_values
|
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:
|
except HTTPException as exc:
|
||||||
# Stop and render exception
|
# Stop and render exception
|
||||||
return render_http_exception(
|
return render_http_exception(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user