Astro 9.5.1中路由到Markdown文件显示页面不存在
Astro 9.5.1中Markdown链接404的解决办法
你遇到的问题是因为Astro会自动将src/pages目录下的Markdown文件编译成HTML页面,访问时不需要带.md后缀,直接使用编译后的页面路径即可。
修复步骤
- 修改链接的
href属性,移除.md后缀:
把原代码里的./post-1.md/这类路径改成./post-1/,修改后的组件代码如下:
--- // component imports import MainLayout from "../../layouts/MainLayout.astro"; --- <MainLayout title="My Blog"> <ul> <li><a href="./post-1/"> post-1</a></li> <li><a href="./post-2/"> post-2</a></li> <li><a href="./post-3/"> post-3</a></li> <li><a href="./post-4/"> post-4</a></li> <li><a href="./post-5/"> post-5</a></li> <li><a href="./post-6/"> post-6</a></li> </ul> </MainLayout>
- 更高效的写法:利用
Astro.glob动态生成博客列表,避免手动维护链接出错:
--- import MainLayout from "../../layouts/MainLayout.astro"; const posts = await Astro.glob("./post-*.md"); --- <MainLayout title="My Blog"> <ul> {posts.map(post => ( <li key={post.url}> <a href={post.url}>{post.frontmatter.title || post.url.split("/").pop()}</a> </li> ))} </ul> </MainLayout>
这种方式会自动获取所有匹配的Markdown文件,读取它们的路由地址和标题(如果Markdown里配置了title前置属性),动态生成链接,后续新增文章也不需要手动修改组件。
内容的提问来源于stack exchange,提问作者Arnav Gandre
相关产品推荐
相关产品推荐

