Next JS 在重写中使用查询参数作为变量

时间:2021-03-24 10:38:27

标签: javascript reactjs next.js

使用 Next JS 我想将路径 /home?id=123qwert 上的请求重定向到新的目标路径 /home/123qwert

我在从源中提取要在目标中再次使用的查询参数时遇到问题。

这是我目前的实现:

    async rewrites() {
        return [
            /**
             * My source URL -> /home?id=123qwerty
             * My new destination -> /home/123qwerty
             */
            {
                source: '/home?id=:cmsId*',
                destination: '/home/:cmsId*'
            }
        ];
    }

我的主页动态页面设置为 /home/[id].js

我不断收到以下错误:

Reason: Unexpected MODIFIER at 5, expected END

  /home?id=:cmsId*
       ^

`source` parse failed for route {"source":"/home?id=:cmsId*","destination":"/home/:cmsId*"}

1 个答案:

答案 0 :(得分:1)

rewrites 对象中的 source 字段遵循 path-to-regexp 的语法,这意味着您在处理查询字符串时需要转义问号 (\\?)。

async rewrites() {
    return [
        {
             source: '/home\\?id=:cmsId*',
             destination: '/home/:cmsId*'
        }
    ];
}