From 3023d8aa573a50da35afd154f8a0d192b195dfca Mon Sep 17 00:00:00 2001 From: dwindown Date: Wed, 1 Apr 2026 20:18:16 +0700 Subject: [PATCH] Bypass mount redirect for /admin with relative redirect --- app/main.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/main.py b/app/main.py index 7df7287..c9d70de 100644 --- a/app/main.py +++ b/app/main.py @@ -15,6 +15,8 @@ from typing import AsyncGenerator from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware +from starlette.responses import RedirectResponse +from starlette.status import HTTP_303_SEE_OTHER from app.core.config import get_settings from app.database import close_db, init_db @@ -177,6 +179,12 @@ app.include_router( if settings.ENABLE_ADMIN: from app.admin import admin as admin_app + @app.get("/admin", include_in_schema=False) + async def admin_entrypoint(): + # Avoid Starlette mount slash-normalization redirect, which can emit an + # absolute URL based on proxy headers such as https://127.0.0.1/admin/. + return RedirectResponse(url="/admin/", status_code=HTTP_303_SEE_OTHER) + app.include_router( ai_router, prefix=f"{settings.API_V1_STR}",