# Permalinks
# Background
MdPress retrieves all Markdown files in the documents source directory and defines the page links based on the file hierarchy. For example if you have the following file structure:
├── package.json
└── source
├── _post
│ └── intro-mdpress.md
├── index.md
└── tags.md
Then you will get following available pages:
/source/
/source/tags.html
/source/_post/intro-mdpress.html
Yet, for a blog system, we hope that the link of a post can be customized. MdPress started supporting this feature, known as permalink, from 1.0.0
. Then, the actual pages would be:
/source/
/source/tags/
/source/2018/4/1/intro-mdpress.html
We have seen the shadow of the blog. Let’s continue to look down.
# Permalinks
A permalink is a URL that is intended to remain unchanged for a long time, yielding a hyperlink that is less susceptible to link rot1. MdPress supports a flexible way to build permalinks, allowing you to use template variables.
The default permalink is /:regular
.
# Configure Permalinks
You can configure globally to apply it for all pages:
// .mdpress/config.js
module.exports = {
permalink: '/:year/:month/:day/:slug'
}
You can also set permalink on a page only, and it will have a higher priority than the global settings.
📝 hello.md:
---
title: Hello World
permalink: /hello-world
---
Hello!
# Template Variables
Variable | Description |
---|---|
:year | Published year of posts (4-digit) |
:month | Published month of posts (2-digit) |
:i_month | Published month of posts (Without leading zeros) |
:day | Published day of posts (2-digit) |
:i_day | Published day of posts (Without leading zeros) |
:slug | Slugified file path (Without extension) |
:regular | Permalink generated by MdPress by default, for implementation see here |