gpt4 book ai didi

reactjs - 在 Next.js 应用程序中生成动态/robots.txt 文件

转载 作者:行者123 更新时间:2023-12-04 11:42:41 25 4
gpt4 key购买 nike

我需要一种方法来动态回答 /robots.txt要求。
这就是为什么我决定使用 getServerSideProps https://nextjs.org/docs/basic-features/data-fetching#getserversideprops-server-side-rendering

If you export an async function called getServerSideProps from a page, Next.js will pre-render this page on each request using the data returned by getServerSideProps.

export async function getServerSideProps(context) {
return {
props: {}, // will be passed to the page component as props
}
}
context参数我们有 reqres对象。
enter image description here
robots.txt 的回应将取决于 req.headers.host值(value)。
例如:
  • www.mydomain.com应该渲染一个产品 robots.txt文件
  • test.mydomain.com应该渲染一个测试 robots.txt文件(我将在测试/暂存部署中使用)。

  • 这是我当前的代码:
    页面/robots.txt.tsx
    import React from "react";
    import { GetServerSideProps } from "next";

    interface Robots {
    ENV: "TEST" | "PROD"
    }

    export const getServerSideProps : GetServerSideProps<Robots> = async (context) => {
    const { req, res } = context;
    const { host } = req.headers;

    res.write("XXX");
    res.end();

    return({ // This is unnecessary (but Next.js requires it to be here)
    props: {
    ENV: "TEST"
    }
    });
    };

    const Robots: React.FC<Robots> = (props) => { // This is also unnecessary (but Next.js requires it to be here)
    console.log("Rendering Robots...");

    return(
    <div>
    I am Robots
    </div>
    );
    };

    export default Robots; // This is also unnecessary (but Next.js requires it to be here).
    它似乎有效:
    enter image description here
    但奇怪的是, Next.js要求我从该页面导出一个组件。并且还返回一个 props: {}来自 getServerSideProps 的对象也是必需的。
    去这里的路是什么?我基本上在使用 req,res来自 getServerSideProps返回不是页面的东西。这是一种反模式吗?
    更新
    是的,这是一种反模式。您应该使用 rewrites .查看所选答案。

    最佳答案

    您可以使用 API route代替逻辑并有一个 rewrite map /robots.txt请求 /api/robots在 Next.js 配置文件中。

    // next.config.js

    module.exports = {
    // ...
    async rewrites() {
    return [
    {
    source: '/robots.txt',
    destination: '/api/robots'
    }
    ];
    }
    }

    关于reactjs - 在 Next.js 应用程序中生成动态/robots.txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67387483/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com