Nextjs静态构建在重新加载时重定向到主页

vlju58qv  于 2023-04-20  发布在  其他
关注(0)|答案(1)|浏览(213)

我创建了一个静态的nextjs构建,使用:npm run export .
它成功导出,但当我在S3或任何其他Web服务器(apache with .htaccess,Nginx)上部署构建时,当路由在浏览器中复制粘贴时,它们重定向到/,当重新加载后,在某些路由上,也被重定向到/
我已经尝试添加trailingSlash: true,仍然不工作,我也尝试过:

exportPathMap: async function (
        defaultPathMap,
        { dev, dir, outDir, distDir, buildId }
      ) {
        return {
          '/': { page: '/' },
          '/home': { page: '/home' },
          '/register': { page: '/register' },
          '/login': { page: '/login' },
          '/forgot_password': { page: '/forgot_password' },
        }
      },

仍然被重定向到根目录。在S3静态虚拟主机上进行所需的更改,如添加重定向规则和错误的index.html,都不起作用。但在任何服务器上的端口上服务时,所有工作正常,但只有在静态构建中才会出现此问题。

iq3niunx

iq3niunx1#

我遇到了同样的问题,我尝试了exportPathMap和TrailingSlash解决方案,但对我也不起作用。
我已经通过将.htaccess文件放置在根目录中修复了它,代码如下:

<IfModule mod_rewrite.c>

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [NC,L]
  
</IfModule>

也许你可以在这里找到更多信息:https://github.com/vercel/next.js/discussions/10522?sort=top

相关问题