reactjs - NextJS 自定义 URL

标签 reactjs next.js

我想将我的博客从 Jekyll 转移到 NextJS,并了解如何指定自定义 URL。 我遵循了他们网站上的官方 NextJS 指南,但路由部分相对简单。从文档中,我得知 URL 是基于文件夹/文件结构的,但我希望在页面文件夹中每个站点主题有一个子文件夹,但保持 URL 平坦。类似这样的事情:

  • pages(顶级文件夹)
    • 投资(子文件夹)
      • how-to-start-investing.js(https://example.com/how-to-start-investing <- 网址中没有投资文件夹)
    • devops(子文件夹)
      • how-to-upgrade-ubuntu.js([https://example.com/how-to-upgrade-ubuntu <- URL 中没有 devops 文件夹)

在 Jekyll 中,我使用 Front Matter 为每个页面指定一个自定义 URL。在 NextJS 中看起来我必须使用重写,但是还有其他选择吗? 另外,Link 组件有一个属性可以更改链接 URL,但这只是为了显示带有 URL 的链接。

最佳答案

在 NextJS 中,路由是由页面目录的结构定义的。如果您不希望这样,则必须解决该功能。您有一些选择:

  1. 使用rewrites将来自 /how-to-start-investing/ 的传入请求映射到 /investing/... — 请注意,与 redirects 不同,重写不会公开目标路径,因此用户将停留在 /how-to-start-investing/ 网址上。
  2. 在根目录中创建名为您希望如何公开路由的文件(例如 how-to-start-investing.js)。在文件内,导出另一个组件,例如:
// how-to-start-investing.js
import { HowToStartInvesting } from "../components/investing/HowToStartInvesting";
export default HowToStartInvesting;

如果您使用这种方法,我建议您将组件放置在页面目录之外的某个位置,这样同一个组件就不会拥有两个 url。

关于reactjs - NextJS 自定义 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71902248/

相关文章:

reactjs - 在graphql中实现多个接口(interface)

javascript - 使用 ref 访问元素内的元素

reactjs - 2 种不同的布局 1 用于管理面板,1 用于 Next.JS 中的前端网站?

next.js - 在 Next JS 中使用 Emscripten 编译的 WebAssembly 模块

javascript - 错误: React Hook "useRouter" - nextJs/javascript app not building

angular - 将 Angular 应用程序与 ReactJS 应用程序连接起来?

javascript - react js-×类型错误: Cannot read property 'map' of undefined

javascript - 如何在 react 中使用键/值对象

reactjs - 如何以编程方式知道 Google AdSense 广告是否成功显示,或者我的 react/next.js 网站是否发生任何错误?

javascript - 为什么我在我的页面中看不到不同的 li 标记?