站点是用 never-write
驱动的,但是这个工具生成的是一个静态资源站点,也就是说所有资源都是直接访问到文件的。
那就意味着每一个URI都是很精确到到文件,HTML文件就会带上后缀。
问题是没什么问题,但是有个后缀在就是比较难受,就想着把.html
后缀去掉。
因为站点的部署是使用NGINX的,所以直接改NGINX配置:
location / {
root 静态资源路径;
index index.html index.htm;
# 这个判断文件是否存在
if (!-e $request_filename){
# 重写,加个后缀
rewrite ^(.*)$ /$1.html last;
break;
}
}
其实这段时网上扣的,核心的!-e $request_filename
这一段逻辑,这段逻辑其实可以优化。
这样就可以不带后缀访问,会被自动补上.html
。
但是还有一个问题,内链还是有 .html
后缀的。
这个可以通过修改 never-write
的EJS模板,或者通过钩子修改资源的路径,在输出时候把后缀去掉就可以实现。
这个是从 NGINX 角度的,如果是用 Node ,或者其他提供静态资源服务,做法也类似。
比如在 Koa:
app.use((ctx, next) => {
if (ctx.url.endsWith('.html')) {
await next();
return;
}
ctx.url = `${ctx.url}.html`;
});
逻辑是随手写的,不一定对,大概是这个意思。