URL匹配规则
网站所有的URL都是通过模板的文件路径决定的。
假设某个网站的模板文件路径为template/post.jade
, 默认对应的是http://domain.com/post
。
URL限制性规则
系统会保留一些特殊的路径,不允许访问或者以其它方式被占用。(下述规则,URL 本身大小写不敏感。)
- /fb_static/ 开头的,这是系统自带的静态资源,此路径下的用户自己无法定义。
- /service/ 开头的,系统专用的一些页面路径,用户无法自定义。
- /configs/ 开头的,不允许访问。
- /licenses/ 开头的,不允许访问。
- /mails/ 开头的,不允许访问。
- /_data/ 开头的,不允许访问。
- 以
.csv
结尾,并且处于根路径下的,不允许访问。 - 以
.md
、.mk
、.markdown
、.txt
Markdown 后缀结尾的 URL,并且能(直接)匹配到具体的 Markdown 文件,如果没有特别声明,不允许访问。
URL匹配优先级
- 静态资源、文件优先匹配
- URL 中呈现为 Markdown 文件类型的,匹配 Markdown 的默认呈现方式
template
目录下的模板文件的匹配
注: 一个直接路径(比如 hello.md
)的Markdown文件的呈现,其页面不可自定义;但是可以换一种思路,在 template
目录下创建一个 x.jade
,那么访问 /x/hello.md
就能处理 hello.md
这个文档的呈现了。
模板文件与URL匹配的规则
- step1, 访问网站首页时, 匹配
index.jade
模板. - step2, 完整匹配URL, 比如访问
/path/sub_path
匹配/path/sub_path.jade
. - step3, 仅匹配URL的第一部分, 比如访问
/first_path/sub_path
, 但是/first_path/sub_path.jade
不存在,则会尝试匹配first_path.jade
. - step4, 如果之前步骤都未匹配到,但是存在
site_routes.jade
,尝试匹配之。 - 以上匹配都失败后,则使用
404.jade
作为Not Found
的页面。
特别说明: 如果网站根目录下有 index.md
,并且使用了 SmartPage 作为渲染引擎,则网站首页会呈现index.md
的内容,但是如果是http://yourdomain.com/?status=loaded
这个特殊的?status=loaded
增加后,则又会尝试使用 index.jade
作为首页的模板渲染。
/path/sub_path 的第一部分是 `path`
/path/sub_path/~~hello/world 的第一部分则是`path/sub_path`
模板文件与混合路径的URL匹配
如果模板文件处于template
目录内,那么文件名中有+
连接多个关键词,可以实现一个页面匹配多个URL的效果。
比如template/index+tags+archive.jade
或template/index+tags+archive.jade
能同时处理首页
、/tags
、/archive
这三个URL。
Scss/Sass/Less/CoffeeScript的原生支持
比如template/styles.scss
,只有访问http://yoursite.com/template/style.scss?raw=true
的时候,才会保留源格式;其它都是自动编译为CSS进行呈现。
对LESS格式的文件也是同样支持的,但是除了基本的层级关系、变量应用外,对LESS的支持相对有限,比如对应extend的写法并不支持。
另外需要注意的是,编译的过程是忽略所有include/import类似的引用逻辑。
同样,F也支持后缀为.coffee
的Coffee Script脚本的自动编译。
注意事项
- 文件路径中不要出现
.
#
以及非英文字符. - 不要试图使用index.jade完成整个网站的route匹配,这样会增加网站自定义、未来维护的难度和成本。