/
_middleware.ts
66 lines (55 loc) · 2.09 KB
/
_middleware.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
export default function middleware(req: NextRequest) {
// Clone the request url
const url = req.nextUrl.clone();
// Get pathname of request (e.g. /blog-slug)
const { pathname } = req.nextUrl;
// Get hostname of request (e.g. demo.vercel.pub)
const hostname = req.headers.get("host");
if (!hostname)
return new Response(null, {
status: 400,
statusText: "No hostname found in request headers",
});
// Only for demo purposes – remove this if you want to use your root domain as the landing page
if (hostname === "vercel.pub" || hostname === "platforms.vercel.app") {
return NextResponse.redirect("https://demo.vercel.pub");
}
const currentHost =
process.env.NODE_ENV === "production" && process.env.VERCEL === "1"
? // You have to replace ".vercel.pub" with your own domain if you deploy this example under your domain.
// You can use wildcard subdomains on .vercel.app links that are associated with your Vercel team slug
// in this case, our team slug is "platformize", thus *.platformize.vercel.app works
hostname
.replace(`.vercel.pub`, "")
.replace(`.platformize.vercel.app`, "")
: hostname.replace(`.localhost:3000`, "");
if (pathname.startsWith(`/_sites`))
return new Response(null, {
status: 404,
});
if (!pathname.includes(".") && !pathname.startsWith("/api")) {
if (currentHost == "app") {
if (
pathname === "/login" &&
(req.cookies["next-auth.session-token"] ||
req.cookies["__Secure-next-auth.session-token"])
) {
url.pathname = "/";
return NextResponse.redirect(url);
}
url.pathname = `/app${pathname}`;
return NextResponse.rewrite(url);
}
if (
hostname === "localhost:3000" ||
hostname === "platformize.vercel.app"
) {
url.pathname = `/home`;
return NextResponse.rewrite(url);
}
url.pathname = `/_sites/${currentHost}${pathname}`;
return NextResponse.rewrite(url);
}
}