fix(deploy): basePath entfernen, neomint.com als kanonische URL ohne /website-Prefix #28

Merged
skr merged 1 commit from fix/remove-base-path into main 2026-05-09 14:30:28 +00:00
Owner

Phase 2 der Apex-Migration

Nach #26 (Apex-Reverse-Proxy) und #27 (Sitemap-Out-Dir) bleibt noch ein kosmetisches Problem: Beim Klick auf interne Links springt die Browser-URL auf https://neomint.com/website/de/foo/, weil der Build mit basePath: '/website' alle internen Links und Asset-URLs mit dem /website-Prefix erzeugt.

Mit dieser Aenderung wird NEXT_PUBLIC_BASE_PATH aus dem CI-Env entfernt; der Build laeuft mit leerem basePath, interne Links sind nur noch /de/.... Caddy auf neomint.com prefixt jede Anfrage intern auf /website/<x> bevor sie an das git-pages-Backend (Host nm.neomint.com) geht. Das git-pages-Storage-Layout bleibt unveraendert.

Architektur danach

Browser              Caddy (neomint.com)              git-pages
 GET /de/             rewrite -> /website/de/          serve /website/de/index.html
   <-- HTML mit       <-- HTML weitergeleitet            (basePath leer, Asset-URLs /_next/...)
         Asset /_next/foo.css
 GET /_next/foo.css   rewrite -> /website/_next/foo.css  serve /website/_next/foo.css

Backwards-Compat

Caddy auf nm.neomint.com macht bereits live (gleichzeitig zu diesem PR):

handle_path /website/* { redir https://neomint.com{uri} 301 }
@old_website_root path /website ; redir @old_website_root https://neomint.com/ 301

Alle alten nm.neomint.com/website/...-Links leiten dauerhaft per 301 auf die Apex-Domain. Suchmaschinen folgen dem; gespeicherte Lesezeichen funktionieren.

Verifikation nach Deploy

curl -sS https://neomint.com/de/ | grep -oE 'href="/website[^"]+'
# erwartet: keine Treffer

curl -sS https://neomint.com/de/ | grep -oE 'href="/[a-z][^"]+' | head -5
# erwartet: href="/de/..." oder href="/_next/..." (ohne /website)

curl -sSI https://neomint.com/_next/static/chunks/<hash>.css
# erwartet: HTTP/2 200

curl -sSI https://nm.neomint.com/website/de/
# erwartet: HTTP/2 301, Location: https://neomint.com/de/
## Phase 2 der Apex-Migration Nach #26 (Apex-Reverse-Proxy) und #27 (Sitemap-Out-Dir) bleibt noch ein kosmetisches Problem: Beim Klick auf interne Links springt die Browser-URL auf `https://neomint.com/website/de/foo/`, weil der Build mit `basePath: '/website'` alle internen Links und Asset-URLs mit dem `/website`-Prefix erzeugt. Mit dieser Aenderung wird `NEXT_PUBLIC_BASE_PATH` aus dem CI-Env entfernt; der Build laeuft mit leerem `basePath`, interne Links sind nur noch `/de/...`. Caddy auf `neomint.com` prefixt jede Anfrage intern auf `/website/<x>` bevor sie an das git-pages-Backend (Host `nm.neomint.com`) geht. Das git-pages-Storage-Layout bleibt unveraendert. ## Architektur danach ``` Browser Caddy (neomint.com) git-pages GET /de/ rewrite -> /website/de/ serve /website/de/index.html <-- HTML mit <-- HTML weitergeleitet (basePath leer, Asset-URLs /_next/...) Asset /_next/foo.css GET /_next/foo.css rewrite -> /website/_next/foo.css serve /website/_next/foo.css ``` ## Backwards-Compat Caddy auf `nm.neomint.com` macht **bereits live** (gleichzeitig zu diesem PR): ``` handle_path /website/* { redir https://neomint.com{uri} 301 } @old_website_root path /website ; redir @old_website_root https://neomint.com/ 301 ``` Alle alten `nm.neomint.com/website/...`-Links leiten dauerhaft per 301 auf die Apex-Domain. Suchmaschinen folgen dem; gespeicherte Lesezeichen funktionieren. ## Verifikation nach Deploy ``` curl -sS https://neomint.com/de/ | grep -oE 'href="/website[^"]+' # erwartet: keine Treffer curl -sS https://neomint.com/de/ | grep -oE 'href="/[a-z][^"]+' | head -5 # erwartet: href="/de/..." oder href="/_next/..." (ohne /website) curl -sSI https://neomint.com/_next/static/chunks/<hash>.css # erwartet: HTTP/2 200 curl -sSI https://nm.neomint.com/website/de/ # erwartet: HTTP/2 301, Location: https://neomint.com/de/ ```
fix(deploy): basePath entfernen — neomint.com als kanonische URL ohne /website-Prefix
All checks were successful
Build & Deploy / check (pull_request) Successful in 31s
Build & Deploy / deploy (pull_request) Has been skipped
defab14b4a
Phase 2 nach #26 (Apex-Reverse-Proxy) und #27 (Sitemap-Fix). Mit dieser
Aenderung erzeugt der Build interne Links und Asset-URLs ohne
/website-Prefix, sodass die Browser-URL nach Klicks innerhalb der Site
auf https://neomint.com/<locale>/<seite>/ bleibt — statt auf
https://neomint.com/website/<locale>/<seite>/ zu springen.

Aenderungen:
- .forgejo/workflows/deploy.yml: NEXT_PUBLIC_BASE_PATH entfernt; Kommentar
  erklaert die Caddy-Side-Architektur (Apex-Caddy prefixt /website intern,
  nm.neomint.com/website/* macht 301 zur Apex).
- src/app/[locale]/layout.tsx: Default-Fallback fuer metadataBase auf
  https://neomint.com gezogen (analog zu next-sitemap.config.js).

Caddy-Side bereits live:
- neomint.com (Apex): @no_prefix conditional rewrite zu /website/<x>,
  reverse_proxy caddy:8080 mit header_up Host nm.neomint.com.
- nm.neomint.com/website/* und /website: 301 zu https://neomint.com{rest}.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
skr merged commit 49d1f8b698 into main 2026-05-09 14:30:28 +00:00
skr deleted branch fix/remove-base-path 2026-05-09 14:30:28 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nm/website!28
No description provided.