import { headers } from 'next/headers';
export default function Home() {
const headersList = headers();
headersList.get('host'); // to get domain
headersList.get('next-url'); // to get url
return <div>....</div>
}
Geeting guys.
I want to create a multi-tanent architecture saas application. Where I want to render a meta data based on the subdomain. For example:
subdomain.trendspot80.tech i want to grab this subdomain and pass to layout.tsx so that express backend select schema based on subdomain. By using headers().get('host')
it gave me localhost:3000 ie host running on server. I am stuck in here.
using headers().get('referer')
gave me null as it only provide domain if user redirect from client.
Here is code I have implemented in layout.tsx
import "@/global.css";
import Provider from "@/providers";
import type { Metadata } from "next";
import Footer from "@/components/molecules/Footer";
import MainHeader from "@/components/molecules/MainHeader";
import { getWebsiteLayouts } from "@/services/layout";
import { fonts } from "../../../public/assets/fonts";
import { getOrign } from "@/lib/storageServer";
import { headers } from "next/headers";
export async function generateMetadata(): Promise<Metadata> {
const { data } = await getWebsiteLayouts('dallas_clothings.trendspot80.tech');
if (!data) {
return {
title: "TrendSpot ",
description: "Trendspot largest social media platform in the world",
};
}
return {
title: data?.results?.[0].name,
description: data?.results?.[0].description || "",
};
}
export default async function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
const origin = await getOrign();
console.log(origin, 'o')
const currentUrl = headers().get("x-saman");
console.log("saman", currentUrl);
const { data } = await getWebsiteLayouts(origin || '')
const palette = {
primary: data?.results?.[0].primaryColor || "#944e63",
secondary: data?.results?.[0].secondaryColor || "#944e63"
};
return (
<html lang="en" className={fonts.rubik.variable}>
<body>
<Provider palette={palette}>
<MainHeader />
{children}
<Footer />
</Provider>
</body>
</html>
);
}
I am expecting some one weather it is possible to get the subdomain in layout.tsx or not.
biebers saman is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.