From 5d9ff13daea8d3b47ca8fea805497e5fee58c99d Mon Sep 17 00:00:00 2001 From: bot-backend Date: Wed, 2 Sep 2026 17:47:28 +0500 Subject: [PATCH] =?UTF-8?q?fix(caddy):=20=D0=B8=D1=81=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B8=D1=82=D1=8C=20=5Fnot-found=20=D0=B8=D0=B7=20=D1=84?= =?UTF-8?q?=D0=B8=D0=BB=D1=8C=D1=82=D1=80=D0=B0=20=D1=87=D0=B0=D0=BD=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D1=82=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=BA=D0=BE=D0=BD=D1=82=D1=83=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ревью #3340: `chunks/app/_not-found/` — внутренняя страница Next, а не маршрут продукта; фильтр её глушил, и клиентская навигация по битому href падала в error-boundary вместо честного «не найдено». Закрытого кода она не несёт. Заодно в комментарии матчера явно зафиксировано, что `static/css/app/<маршрут>/*` оставлен без фильтра сознательно — тот же класс «имена, а не код», потолок уже задекларирован. --- caddy/sites/apps.caddy | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/caddy/sites/apps.caddy b/caddy/sites/apps.caddy index 83f6293e..8695088d 100644 --- a/caddy/sites/apps.caddy +++ b/caddy/sites/apps.caddy @@ -496,10 +496,17 @@ meraocenka.ru { # ручек. Матчер отсекает ровно «есть подкаталог, и он не mera-public» — # `not` вместо негативного lookahead, RE2 его не поддерживает. # + # `_not-found` в исключениях — это не маршрут продукта, а внутренняя + # страница Next (404 при клиентской навигации по битому href). Закрытого + # кода не несёт, а без исключения клиентский переход падал бы в + # error-boundary вместо честного «не найдено». + # # Ограничение честно: это убирает КОД, но не имена файлов — карта чанков # лежит в `webpack-*.js`, который лэндингу нужен, поэтому перечень - # маршрутов из неё по-прежнему вычитывается. Полное разделение — split - # build (отдельный public-бандл), отдельная задача. + # маршрутов из неё по-прежнему вычитывается. По той же причине оставлены + # без фильтра и `static/css/app/<маршрут>/*`: это тот же класс «имена, а не + # код», и городить второй матчер ради него смысла нет. Полное разделение — + # split build (отдельный public-бандл), отдельная задача. # # `respond` внутри `handle` выполняется раньше `reverse_proxy` (порядок # директив Caddy), поэтому вложенный матчер не зависит от сортировки @@ -507,7 +514,7 @@ meraocenka.ru { handle /trade-in/_next/static/* { @foreignRouteChunk { path_regexp ^/trade-in/_next/static/chunks/app/[^/]+/ - not path /trade-in/_next/static/chunks/app/mera-public/* + not path /trade-in/_next/static/chunks/app/mera-public/* /trade-in/_next/static/chunks/app/_not-found/* } respond @foreignRouteChunk 404