根据客户端主机名NextJS

问题描述

我有一个非常独特的要求; 我们需要动态生成两个具有两种不同内容类型(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;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...