From d21935387734d5ce1e66f9f48b908df58d1b3ad4 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Wed, 15 Jan 2025 14:35:19 +0530 Subject: [PATCH] fix: edge case for redirects on `/` (#29180) Because all slashes are stripped this endpoint becomes `""` which is not a valid key for redis hash. --- frappe/website/path_resolver.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/website/path_resolver.py b/frappe/website/path_resolver.py index e519d848a6..e6b7dab21b 100644 --- a/frappe/website/path_resolver.py +++ b/frappe/website/path_resolver.py @@ -115,7 +115,7 @@ def resolve_redirect(path, query_string=None): ] """ - redirect_to = frappe.cache.hget("website_redirects", path) + redirect_to = frappe.cache.hget("website_redirects", path or "/") if redirect_to: if isinstance(redirect_to, dict): frappe.flags.redirect_location = redirect_to["path"] @@ -150,11 +150,11 @@ def resolve_redirect(path, query_string=None): frappe.flags.redirect_location = redirect_to status_code = rule.get("redirect_http_status") or 301 frappe.cache.hset( - "website_redirects", path_to_match, {"path": redirect_to, "status_code": status_code} + "website_redirects", path_to_match or "/", {"path": redirect_to, "status_code": status_code} ) raise frappe.Redirect(status_code) - frappe.cache.hset("website_redirects", path_to_match, False) + frappe.cache.hset("website_redirects", path_to_match or "/", False) def resolve_path(path):