From f937f5a168f66ccaff003332f1e488d9895a47d7 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Thu, 2 Jul 2026 19:26:55 +0300 Subject: [PATCH] fix(tradein/frontend): redirect legacy /trade-in root to canonical /v2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Оценщики клиента должны попадать на новую витрину /trade-in/v2 (wired на real data), а не на легаси-корень (app/page.tsx, HeroSummary). Добавляю декларативный redirects() в next.config: source "/" -> destination "/v2". - permanent:false -> 307 (обратимо, не кэшируется навсегда) - basePath авто-префиксит -> редирект /trade-in -> /trade-in/v2 - query-string Next пробрасывает автоматически (destination без своего query) -> /trade-in/?id= -> /trade-in/v2?id=, restore оценки по ?id= не ломается (v2 читает ?id= через window.location.search) - легаси page.tsx / компоненты остаются в репо (только редирект, обратимо) --- tradein-mvp/frontend/next.config.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tradein-mvp/frontend/next.config.ts b/tradein-mvp/frontend/next.config.ts index 37a1f18c..3e15e672 100644 --- a/tradein-mvp/frontend/next.config.ts +++ b/tradein-mvp/frontend/next.config.ts @@ -16,6 +16,18 @@ const nextConfig: NextConfig = { // trailingSlash — false (default), важно чтобы Caddy /trade-in без слэша // редиректил на /trade-in/. + // Каноничная витрина = /v2. Легаси-корень (app/page.tsx, HeroSummary) + // остаётся в репо, но корень редиректит на /v2, чтобы оценщики попадали + // сразу на новую версию. permanent:false → 307 (обратимо, не кэшируется + // навсегда). basePath авто-префиксит source/destination → редирект живёт + // на /trade-in → /trade-in/v2. Query-string Next пробрасывает автоматически + // (destination без своего query), поэтому /trade-in/?id= → + // /trade-in/v2?id= — ссылки на конкретную оценку (restore по ?id=) + // не ломаются. + async redirects() { + return [{ source: "/", destination: "/v2", permanent: false }]; + }, + // В dev (без Caddy) Next.js сам проксирует /api/* и /health на backend // так что браузер использует относительные same-origin URLs. async rewrites() { -- 2.45.3