背景
生成的静态博客页面源码中的url被替换为localhost是很偶然发现的,最开始是一个如下的
1 2 |
<link rel="canonical" href="http://localhost:4000/2018/12/09/solve-jekyll-generated-html-replaced-with-localhost-url/"> |
link标签中的url出现这种情况,搜了一下link canonical结果显示跟搜索引擎有点关联,因为我比较重视SEO就一直绞尽脑汁想解决这个问题,后来在用git diff
命令的时候发现了更多被替换的url如下图:
原因
其实原因就在于执行过jekyll serve
命令后,jekyll会先build一下,其此时build的时候会将所有的url的开头自动替换为http://localhost:4000
,另外jekyll serve
命令在运行的过程中Auto-regeneration自动生成默认是开启的,只>要有文件变动,自动生成的html中的url也会自动替换
解决方法
其实很简单,要么control+c停止jekyll serve
命令运行,要么不要变动文件,只需要再新建一个终端页面cd到你的jekyll项目根目录下(注意一定要是根目录,否则会在你运行的目录下面又多出来一个_site
文件夹哦!),手动执行一下 jekyll build
命令即可将url里面http://localhost:4000
替换为你的_config.yml配置文件中url参数后面的网址,比如我的配置是url: "https://www.sharpgan.com"
万恶之源
我把.gitignore
里面的_site给删除掉了,其实_site文件夹下面生成的静态html是不应该push到仓库里面的,主要是我用的vps只有512MB的小运存,还同时充当番茄服务器, 同时也不想再装ruby环境在vps上面build站点,其实正确的姿势就是应该在vps上build站点,最好是搞个简单的CI+CD工作流的,奈何这样子估计要升级vps,囊中羞涩先不折腾这一套东西了。