mycofi-earth-website/middleware.ts

52 lines
1.4 KiB
TypeScript

import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
export function middleware(request: NextRequest) {
const host = request.headers.get('host') || ''
const pathname = request.nextUrl.pathname
// Handle zine.mycofi.earth subdomain
if (host.startsWith('zine.')) {
// Don't rewrite if already accessing /zine paths or API/static files
if (
pathname.startsWith('/zine') ||
pathname.startsWith('/api/zine') ||
pathname.startsWith('/_next') ||
pathname.startsWith('/favicon') ||
pathname.includes('.')
) {
return NextResponse.next()
}
// Rewrite root and other paths to /zine
const url = request.nextUrl.clone()
if (pathname === '/') {
url.pathname = '/zine'
} else if (pathname.startsWith('/create')) {
url.pathname = `/zine${pathname}`
} else if (pathname.startsWith('/z/')) {
url.pathname = `/zine${pathname}`
} else {
// For any other path, try prepending /zine
url.pathname = `/zine${pathname}`
}
return NextResponse.rewrite(url)
}
return NextResponse.next()
}
export const config = {
matcher: [
/*
* Match all request paths except:
* - _next/static (static files)
* - _next/image (image optimization files)
* - favicon.ico (favicon file)
*/
'/((?!_next/static|_next/image|favicon.ico).*)',
],
}