根据客户端主机名NextJS

时间:2020-11-03 16:53:29

标签: javascript node.js reactjs next.js sitemap

我有一个非常独特的要求; 我们需要动态生成两个具有两种不同内容类型(xml和txt)的文件,以便为robots.txt和sitemap.xml提供服务。

这里要注意的是,这两个文件必须从根目录提供,并且应该动态提供,因为我们需要检查应用程序的主机名并根据该主机名呈现这两个文件。

示例不同的主机可以具有不同的站点地图;因此需要从服务器获取站点地图,并将其相应地呈现给客户端。

我使用getInitialProps方法来解决此问题,但不幸的是,由于此代码是在服务器端而不是在客户端上构建的,因此主机名无法访问。

class Sitemap extends React.Component {

static async getInitialProps({ res }) {

    if(res) {

        const hostName= res.headers.host;
        console.log(`request_source ${hostName}`);

       // do some other works and get data and render this accordingly 

        if (isSubDomain(hostName)) {

             // just for testing I have hardcoded this
            const textFile = () => {
                return `User-agent: *
                    Disallow: /`;
            };
            res.setHeader("Content-Type", "text/plain;charset=UTF-8");
            res.write(textFile());
            res.end();

        } else {

            const textFile = () => {
                return `User-agent: *
                    Disallow:`;
            };
            res.setHeader("Content-Type", "text/plain;charset=UTF-8");
            res.write(textFile());
            res.end();

        }
    }
}} export default Sitemap;

0 个答案:

没有答案