From 8eb9bc46767b8cb449fc986a2575ccca7316ff81 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 25 Jun 2026 14:35:56 +0800 Subject: [PATCH] fix: auto-resolve extensionless URLs by trying processor extensions When url2file returns None for a path like /i18n_getmsgs, try appending each registered processor extension (.dspy, .ui, .tmpl) to find a match. This fixes bricks i18n.js requesting /i18n_getmsgs without .dspy suffix. --- ahserver/processorResource.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ahserver/processorResource.py b/ahserver/processorResource.py index 8b600b0..6b25850 100644 --- a/ahserver/processorResource.py +++ b/ahserver/processorResource.py @@ -364,6 +364,13 @@ class ProcessorResource(StaticResource,Url2File): self.user = await auth.get_auth(request) self.y_env.user = self.user self.request_filename = self.url2file(str(request.path)) + # Fallback: try adding processor extensions for extensionless URLs + if not self.request_filename: + for ext, _ in self.y_processors: + candidate = self.url2file(str(request.path) + ext) + if candidate: + self.request_filename = candidate + break request['request_filename'] = self.request_filename path = request.path config = getConfig()