我的Blog的文章的链接本来是类似http://everet.org/2013/02/thinking-of-emacs.html这样的,不过觉得发布的时间戳加到url中,对老文章的SEO不利。所以决定将其去掉,改为http://everet.org/thinking-of-emacs.html。
另一个是我想缩短下文章url的长度。
不过缩短url会遇到两个大问题,第一个是原来发出去的原来的文章链接会404,第二个是评论系统Disqus是根据文章url来作为评论的标识符。
不过好在是有无痛的解决方案,我们来各个击破。
首先我们要去掉时间戳,这个非常容易,修改_config.yml
。
1 | - permalink: /:year/:month/:title.html |
这样就可以将让Octopress生成文章的时候去掉时间戳,只保留文章标题。
不过如果此时就止步的话,原来的链接访问都会404,而且评论全部都会不见了。所以我们需要做一些处理。
301重定向原url
HTTP Code的301的意思是301 Moved Permanently
。
我的Blog是用Nginx来服务Blog的文件,我们可以让Nginx在访问原来的url的时候,301重定向到新的地址。我们加上以下配置,通过正则表达式匹配,找出文章标题,然后重写url。
1 | location ~* ^/\d+/\d+/.+\.html$ { |
然后我们访问旧的文章链接的时候,就会301重定向到新的文章地址了。这样旧的文章地址就不会404了。
Disqus的评论
刚刚说到Disqus的评论是根据文章url来标识的,我们改了url,评论就会不见了。不过好在Disqus的Admin设置有个爬虫,Discussions
->Tools
->Start Crawler
,他可以根据301重定向自动更新原来的评论的标志,也就是新的url也可以看到之前url的评论了。
打完收工!