Files
aia-website/www/reports/phase-10-slashless-url-normalization-2026-10-25.md
T

1.9 KiB

Phase 10 Slashless URL Normalization — 2026-10-25

Scope

This local-only change aligns static-serving behavior with the live site's URL convention: root remains /; every other public page is served at a slashless path such as /aba-therapy or /lp/aba-therapy.

Astro was already configured with trailingSlash: 'never'. Generated canonicals, hreflang URLs, sitemap entries, and source links therefore use slashless paths. The remaining deployment requirement is that a static web server must serve a generated path/index.html artifact for a slashless request without first redirecting to a directory URL.

Required server contract

The reviewed nginx template in reports/nginx-rewrites.conf must be included inside the public HTTPS server block before general static routing. It requires the server to:

  • return a query-preserving 308 from /path/ to /path;
  • serve /path from path/index.html without nginx's automatic directory-slash redirect;
  • preserve query strings, for example /search/?term=aba redirects to /search?term=aba;
  • keep root / unchanged; and
  • retain explicit legacy route redirects after URL normalization.

This is a deployment template only. No Contabo, nginx, DNS, TLS, Cloudflare, or live-site configuration was changed.

Regression protection

tools/phase10-artifact-verify.mjs now rejects generated root-relative href or action URLs with a terminal slash, excluding root /. tools/phase10-release-rehearsal.mjs models the required static behavior on loopback: slashless routes return 200, trailing variants return 308, and query strings survive the redirect.

Acceptance still required

The template must be applied and tested by the approved hosting owner on the actual Contabo staging topology. Phase 10 must verify HTTPS, canonical host behavior, cache headers, redirects, assets, real 404s, forms/counter isolation, and rollback before any production cutover. This change does not authorize deployment.