这两天我把之前放在另一个域名下面的二十几篇文章手动转移到了现在这个博客里面,懂点 SEO 的都知道,不能光复制粘贴了事,还要把之前的文章做一个 301 重定向到新文章。旧的网站用的是 nginx 服务器,那么在 nginx 下如何来实现不同域名的具体某个网址的 301 重定向呢?

因为我要实施跳转的网址都是非常具体的某个网址,所以不存在使用正则表达式的情况。先看一下具体的要求,原网址是 http://blog.zmr.xyz/how-to-display-idn-in-chrome/,新的网址是 https://blog.seanchang.org/2015/10/how-to-display-idn-in-chrome.html

网上随便搜索下,关于 301 重定向的文章大把大把的,但是其中有好多可以说是在误导人,他们典型的都是用的 if 和 rewrite 语句。而 nginx 官方曾明确表明,除非很有必要你也确实清楚这里就得用 if,否则不要使用 if,nginx 配置文件中 if 语句泛滥,绝对不是好事。

回到我的这个例子,那么从原网址到新网址的 301 重定向语句应该怎么写呢?非常简单,配合 location 使用 “return” 就行了!具体如下图所示:

nginx-return-301.png

前面原网址那个链接就是已经做了 301 跳转的,点击一下,可以看到最终打开的页面是新的网址的。