1+++
2title = "internal links and references"
3date = 2026-04-17
4description = "linking between pages with compile-time validation"
5[taxonomies]
6tags = ["zola", "demo"]
7+++
8
9zola has a built-in internal linking system that validates links at build time. if you link to a page that doesn't exist, the build fails — no broken links in production.
10
11## syntax
12
13use `@/` prefix to reference content files by their path:
14
15```markdown
16check out the [hello world](@/posts/hello-world.md) post.
17```
18
19this resolves to the correct permalink at build time, so URLs stay valid even if you change your URL structure.
20
21## cross-references
22
23here are links to other posts on this site:
24
25- [hello world](@/posts/hello-world.md) — markdown and syntax highlighting
26- [templates and sections](@/posts/templates-and-sections.md) — how zola templates work
27- [shortcodes](@/posts/shortcodes.md) — reusable template snippets
28- [about page](@/about.md) — how this site works
29
30## why this matters
31
32- **no broken links** — the build fails if a target doesn't exist
33- **refactoring-safe** — rename a file, update the `@/` path, done
34- **no hardcoded URLs** — works across environments (dev, staging, prod)
35
36## summary separator
37
38zola supports a `<!-- more -->` marker to split content into summary and body. the text before the marker becomes `page.summary`, useful for post previews in listings.
39
40<!-- more -->
41
42everything below this line is only visible on the full page, not in post listings (if the template uses `page.summary`).