前两天,看到竹林里有冰博客发表了一篇文章《我的博客被完整地反向代理,并自动翻译成了繁体中文》,里面提到了 Umami 网站访问统计工具,我有段时间没有在自己的网站上用这些应用了,心想放一份也不错,于是就调查了一下 Umami。
我发现 Umami 可以直接用网站提供的服务,也可以部署在自己的服务器上。网站服务有几个等级,有免费的也有收费的,其中免费的有大部分功能,但也有一定限制,比如网站记录只保留一年。我肯定是希望自己部署了,但是看到它装了不少 Nodejs 的包,心想如果可以,最好使用它的 Docker 方式来安装,这样就不会搞乱了我本地的文件夹。按照给出的安装方式尝试,也问了 GPT,结果最终安装成功,但是无法访问。我找了一些资料,对我这种期望部署在网站子文件夹这种情况的文档极少,很多网站的结构都相对简单,一个域名部署的也只有一个服务,很少有我这种把不同服务放在不同的子文件夹的情况。
我回想一下,最早我的网站其实是用的子域名的形式组织的。当时没什么经验,算是凭借本能进行操作,把我的博客部署在了 blog.cnliufeng.com
这个子域名。有些人的网站只用来写博客,因此直接部署在根域名下面。我希望自己的网站还可以放些其他东西,就用了子域名。当时我对子域名和子文件夹的这种形式没什么概念,一开始觉得这样好看,几年后又后悔了,把整个网站的架构进行了折腾,给弄成了子文件夹的形式,比如我的博客地址成了 cnliufeng.com/blog
。现在想不起来当时是怎么想的了,可能只是觉得这样好看吧?搜索了一下博客的旧文章,我在 2019 年 11 月做了这件事,当时应该是已经开始使用了当前的 liuf.net
域名了。
总而言之,看了一下过去的文章,对当时决定把子域名换成子文件夹的形式的原因到现在也很难找回了,看其中有种意思是想统一管理,比如当时我使用 Movable Type 来写博客,它可以生成一个静态的 HTML 网页,套用跟博客一样的模板。我心想如果我用它来生成一个首页,不就可以把我整个网站,至少是静态页面与博客用一个工具来管理吗?这样我插入一些网站统计代码等,不就可以更加方便了吗?现在想想当时真是经验不足,事实上,我最终也没用成 Movable Type 来管理我的静态页面,总有各种各样的问题,还有我解决不了的层级问题。反倒是后来,我通过 301 重定向方便的解决了这个问题,我使用 wiki 工具来生成页面,把首页重定向到其中一个特殊的页面就行了。其实也完全可以用博客工具来做这件事情呢。
但这两年,我在考虑一个问题,我或许应该把网址的格式从子文件夹调回子域名的形式。这不是一个简单的决定,因为对我来说,互联网是有记忆的。一旦我的网站中的一篇文章对别人有点意义,让他们收藏了网址,一旦我变更了网址,也会造成之前的网址失效。我对网站上的页面失踪这件事感觉挺心痛的,如果有一天自己也成为了其中的一员,还是有些打脸的。
为什么想这样呢?因为我感觉,使用子文件夹,就相当于我要在根目录开始管理整个网站。比如我使用 Nginx 作为网站服务器,我需要给 /blog/
文件夹设定规则,把网址路由到某个 cgi 页面;同样的,对 /wiki/
文件夹,我也要做相同的事情。这样不光造成我的配置文件的冗长,也会让我有中顾头不顾尾的感觉,特别是当不同的系统使用不同的编程环境的时候,比如过去我用过 WordPress,它使用 PHP 环境,用过 MoinMoin,它使用 Python 2 环境,中间的配置就特别费事。
还有,在前几年我遇到过 SSL 证书的部署问题,特别是在尝试使用 Docker 的时候。比如我目前全站使用了 SSL 证书,但是当我部署完毕一个 Docker 实例并启动之后,总是在访问这一步遇到问题。其他的都很顺利,让我挺想把博客、wiki 都通过 Docker 来部署,以防造成文件的混乱。还有段时间我尝试 Artalk 的时候,也遇到了相当多的跳转问题。很多系统的设计时就没有考虑过子文件夹的这种形式,我遇到过非常多跳转后把 URL 中的子文件夹给弄丢了的情况,造成无法到达正确的页面,确实非常头疼。
这两天我想到,我在配置域名 DNS 解析的时候,可以把不同的子域名解析到不同的服务器上,这样相当于让不同的子域名有了自己的配置,与其他的子域名互不干扰,解决了配置文件冗长的问题。对一个子域名来说,他下属的 URL 完全把它当作根域名,也不会有一些系统的兼容性问题,相当于解决了我长时间的难处。当然,其实做好了 web server 的配置,或许也不需要用子域名,子文件夹也可以是虚拟的,但想了一下配置起来可能要稍微麻烦,麻烦到我都懒得尝试。
其实我是蠢蠢欲动的,唯一顾虑的就是文章 URL 的失效问题。我想可以配置 301 规则自动跳转到新的 URL,又担心它的效果。最终还是要等我下定决心吧,这两天的事情比较多,或许哪天我有空有经历了,我会在一个空白主机上做做实验,没问题的话就正式切过去。
这个问题我也考虑过。担心的问题跟你一样。我主要考虑的是一个引申的问题:下场又想改链接格式的时候,再次301恐怕就不行了。于是作罢。