Вы можете проверить это в методе pages/_app.jsx
file static getInitialProps(context)
и использовать context
, чтобы проверить, откуда поступил запрос, а затем вернуть флаг компоненту.
Пример:
// pages/_app.js
import app from 'next/app';
export default class MyApp extends app {
static getInitialProps({ Component, router, ctx }) {
let pageProps = app.getInitialProps({ Component, router, ctx });
if (ctx.req.headers.host.match(/localhost/)) {
pageProps = {
...pageProps,
renderFrom: 'mydomain',
}
}
return { pageProps };
}
render() {
const { Component, pageProps } = this.props;
return (
<section id="app">
<Component {...pageProps} />
</section>
);
}
}
Обратите внимание, что я вызываю app.getInitialProps
, чтобы имитировать поведение компонента next/app
, как в исходном коде здесь
В вашем pages/index.js
у вас будетдоступ к props.renderFrom
и там вы можете отображать данные.
// pages/index.js
import React from 'react'
const Home = props => (
<div>
Rendering content for domain: {props.renderFrom}
</div>
)
export default Home
Поскольку вы проверяете, откуда поступил запрос в _app.js
, это свойство будет доступно во всех ваших контейнерах (страницах), поэтому вы можетеиметь ту же самую маршрутизацию для вашего приложения и просто отображать данные по-разному.
Совет: вы также можете использовать next-routes
для управления маршрутизацией для приложения, это лучше, чем в следующем разделе, и здесь у вас естьпользовательский сервер, на котором вы также можете управлять своим трафиком.
Надеюсь, это поможет вам и укажет правильное направление.