diff --git a/datasette/app.py b/datasette/app.py index e7f34e69..8b8b601f 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -2870,19 +2870,22 @@ def wrap_view_function(view_fn, datasette): def permanent_redirect(path, forward_query_string=False, forward_rest=False): - return wrap_view( - lambda request, send: Response.redirect( + def view(request, send): + redirect_path = ( path + (request.url_vars["rest"] if forward_rest else "") + ( ("?" + request.query_string) if forward_query_string and request.query_string else "" - ), - status=301, - ), - datasette=None, - ) + ) + ) + route_path = request.scope.get("route_path") + if route_path and request.path.endswith(route_path): + redirect_path = request.path[: -len(route_path)] + redirect_path + return Response.redirect(redirect_path, status=301) + + return wrap_view(view, datasette=None) _curly_re = re.compile(r"({.*?})") diff --git a/datasette/templates/api_explorer.html b/datasette/templates/api_explorer.html index dc393c20..58e2a88c 100644 --- a/datasette/templates/api_explorer.html +++ b/datasette/templates/api_explorer.html @@ -19,7 +19,7 @@

GET -
+
@@ -29,7 +29,7 @@
POST - +
diff --git a/datasette/templates/patterns.html b/datasette/templates/patterns.html index 7770f7d4..a46478a7 100644 --- a/datasette/templates/patterns.html +++ b/datasette/templates/patterns.html @@ -11,7 +11,7 @@