在next.js中,您可以使用根目录中的“public”目录来提供静态资产。我在这个目录中有index.html文件,因为我希望我的登录页面是纯静态的。
但是,当使用next
或next start
时,我无法访问位于http://localhost:3000/的登录页面。我只能访问位于“http://localhost:3000/index.html“的登录页面。
有没有办法设置next.js,使顶级域(http://localhost:3000)将服务于我的登录页面?
在next.js中,您可以使用根目录中的“public”目录来提供静态资产。我在这个目录中有index.html文件,因为我希望我的登录页面是纯静态的。
但是,当使用next
或next start
时,我无法访问位于http://localhost:3000/的登录页面。我只能访问位于“http://localhost:3000/index.html“的登录页面。
有没有办法设置next.js,使顶级域(http://localhost:3000)将服务于我的登录页面?
2条答案
按热度按时间li9yvcax1#
您可以在
next.config.js
中添加重写。为了允许urlmysite.com/
指向/public/index.html
,我在我的config中添加了以下内容(内容在我的/public
目录中):注意:
index.jsx/.tsx
将优先于/public
中的文件来源:https://nextjs.org/docs/api-reference/next.config.js/rewrites
z18hc3ub2#
Next.js路由器只提供从
pages
目录中的.js
、.ts
和.tsx
导出的页面。你需要一个自定义的服务器,它可以提供除此之外的任何服务。
Custom Server
此外,如果使用反向代理(如
nginx
),则可以在请求到达Node.js之前由服务器处理该请求。如果登陆页面只是一个
.html
文件,您可以将其 Package 在Next.js页面中。通过服务器端呈现,页面将在服务器上预先呈现,并以与.html
文件相同的方式提供。或者,如果您无法将HTML转换为JSX,您可以使用危险的SetInnerHTML将原始HTML代码设置为React的
render()
。