From f9a1dce7b552c85ae31ebd90bb50a0b2573a1d86 Mon Sep 17 00:00:00 2001 From: MartinBraquet Date: Thu, 2 Apr 2026 12:31:11 +0200 Subject: [PATCH] Migrate apex redirect logic from `next.config.ts` to middleware for improved flexibility and maintainability --- web/middleware.ts | 26 ++++++++++++++++++++++++++ web/next.config.ts | 6 ------ 2 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 web/middleware.ts diff --git a/web/middleware.ts b/web/middleware.ts new file mode 100644 index 00000000..4a1a2d1a --- /dev/null +++ b/web/middleware.ts @@ -0,0 +1,26 @@ +import type {NextRequest} from 'next/server' +import {NextResponse} from 'next/server' + +const DOMAIN = 'compassmeet.com' + +export function middleware(request: NextRequest) { + const host = request.headers.get('host') || '' + const url = request.nextUrl.clone() + + // Never redirect well-known files (Android + iOS app verification) + if (url.pathname.startsWith('/.well-known/')) { + return NextResponse.next() + } + + // apex → www + if (host === DOMAIN) { + url.hostname = 'www.compassmeet.com' + return NextResponse.redirect(url, 308) + } + + return NextResponse.next() +} + +export const config = { + matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'], +} diff --git a/web/next.config.ts b/web/next.config.ts index dc043e51..88c6e89d 100644 --- a/web/next.config.ts +++ b/web/next.config.ts @@ -112,12 +112,6 @@ const nextConfig: NextConfig = { }, async redirects() { return [ - { - source: '/((?!\\.well-known/assetlinks\\.json).*)', - has: [{type: 'host', value: 'compassmeet.com'}], - destination: 'https://www.compassmeet.com/:path*', - permanent: true, - }, {source: '/discord', destination: 'https://discord.gg/8Vd7jzqjun', permanent: false}, {source: '/patreon', destination: 'https://patreon.com/CompassMeet', permanent: false}, {