Quiero cargar una configuración específica (horario de apertura, dirección de la empresa,…) en función del subdominio. Por lo tanto, quiero ejecutar una sola instancia de NextJS para diferentes clientes (cada cliente tiene un subdominio).
lo intento
export async function getStaticProps() { const subdomain = /:\/\/([^\/?]+)/.exec(window.location.href)[1].split(".")[0]; const config = mysqlquery(subdomain); return { props: { config, } } }y obtengo que la ventana no está definida.
Primero instale absoluteUrl, luego debe solicitar a su API local que busque el subdominio y vea el código:
export async function getStaticProps() { const req = await fetch("http://localhost:3000/api/hello"); const dd = await req.json(); console.log("sub", dd); return { props: { aboutData: [], }, };}
ahora en páginas/api/hello.js
import absoluteUrl from "next-absolute-url"; export default async function handler(req,res) { const { origin } = absoluteUrl(req); let subdomain = origin.match(/\w+/); console.log("request ", subdomain); return res.status(200).json({ subDomain: subdomain }); }enviará un subdominio de matriz que es el primer índice de la matriz, en realidad no estoy seguro acerca de la expresión regular que escribo, puede verificar si no funciona, escriba su propia expresión regular para determinar el subdominio
Puedes acceder a la url usando context.req.headers.referer, siendo tu código el siguiente:
export async function getStaticProps(context) { const subdomain = /:\/\/([^\/?]+)/.exec(context.req.headers.referer).split(".")[0]; const config = mysqlquery(subdomain); return { props: { config, } } }