是否可以根据用户代理(设备类型)在 vercel 上使用 nextjs 提供不同版本的静态页面?

Posted

技术标签:

【中文标题】是否可以根据用户代理(设备类型)在 vercel 上使用 nextjs 提供不同版本的静态页面?【英文标题】:Is it possible to serve different versions of a static page with nextjs on vercel according to useragent (device type)? 【发布时间】:2021-05-14 13:34:32 【问题描述】:

nextjs 页面/users/[userid] 在vercel 平台的构建时静态呈现。 无论如何,是否可以根据用户代理(设备类型)通过 vercel 或 nextjs 上的某些配置来提供该页面的两个不同版本? (同时保持静态)

请求example.com/users/userid 的移动用户与请求相同路径的桌面用户获取不同的静态页面。

【问题讨论】:

上下文对象可以让您访问用户代理标头:nextjs.org/docs/api-reference/data-fetching/… 【参考方案1】:

目前,此功能不可用。不过,我们正在努力进行更新,以使其成为可能。

敬请关注 Vercel 平台和 Next.js 的更新。

编辑:现在可以使用“has”属性和“rewrites”:

// next.config.js
module.exports = 
  async rewrites() 
    return 
      beforeFiles: [
        
          source: '/some-page',
          destination: '/somewhere-else',
          has: [
            type: 'header', 
            key: 'user-header',
            value: 'insert-regex-here'
          ],
        ,
      ],
      // ...
    
  ,

【讨论】:

甜蜜!谢谢(你的)信息。您能否透露此功能的粗略估计时间表?只是试图衡量是否值得建立一个临时解决方案...... 我不能。但是你应该给团队至少 7 天

以上是关于是否可以根据用户代理(设备类型)在 vercel 上使用 nextjs 提供不同版本的静态页面?的主要内容,如果未能解决你的问题,请参考以下文章

从用户代理中识别 iOS 设备的好方法是啥?

Twig - 确定是否为移动代理

如果华为设备不支持谷歌服务,是不是可以从用户代理中识别?

JS判断设备的类型

javascript:检查用户代理是不是在桌面设备上

无法在 vercel 生产中验证 spotify