# 正文里的链接

在正文里链接到另一个页面时，直接写它的文件路径：

```md
先看[快速开始](../getting-started.mdx)。

分组的写法见[文档树](../concepts/document-tree.mdx#四个函数)。
```

构建时，minidocs 把它换成页面的地址。这和在 GitHub 或编辑器里浏览 Markdown 时的写法一样，编辑器可以补全路径、跳转到文件。改了 `prefix`、`base` 这些配置，链接也不用跟着改。

链接到不存在的文件时，构建会失败：

```
[minidocs] src/content/docs/zh/guides/sidebar.mdx:12: "../getting-started.md" points to a file that does not exist.
```

## 规则

- 只处理以 `.md` 或 `.mdx` 结尾的相对路径，扩展名不能省。外部链接、以 `/` 开头的地址和 `#anchor` 原样保留
- 锚点会保留：`../install.mdx#requirements` 链接到那个页面的 `#requirements`
- 可以链接到另一个用 minidocs 的 `glob` 加载的集合，见[多个集合](/docs/guides/collections.md)
- 链接到这些集合以外的文件，比如项目根目录的 `README.md`，构建会失败，因为它没有对应的页面
- 链接到被 `filter` 排除的页面，构建也会失败

## 多语言站点

链接到同一个语言目录里的文件，就是链接到同一种语言的页面。

一个页面没有翻译、显示的是另一种语言的内容时，它里面的链接仍然指向当前语言的页面，读者不会被带到另一种语言的站点。

想明确链接到另一种语言，就写那种语言目录里的文件：

```md
<!-- zh/guides/deploy.mdx -->
这一节只有英文版：[Deploying](../../en/guides/deploy.mdx)。
```

## 限制

- 锚点来自标题文字。一个中文页面里写的 `#四个函数`，在英文站上如果目标页面已经翻译成英文，标题变成了 `#four-functions`，链接只会停在页面顶部
- 生成的是相对地址。把渲染出的 HTML 用在别处，比如 RSS 的全文，需要自己把它们转成完整的地址
- 开发服务器里，坏链接只在打开那个页面时报错，`.md` 文件的坏链接只出现在终端里。构建时都会失败
