搬家到 Linode & nginx 重定向设置

本文发布已超过一年,其中的内容可能已经过时。

博客搬家到了 Linode 的东京结点上,操作系统依然使用的是配置服务器最顺手的 ArchLinux 但服务器构架从之前小内存机器上仔细调教过的 MySQL + Apache httpd 变成了复杂一些但可以充分压榨服务器性能的 MySQL + Apache httpd -> varnish -> nginx 也即通常所说的 LNMPA 再加一个 varnish 这样。数据库和文件等的迁移都很顺利,因为是先修改我的本地dns缓存指向新主机,调试好过后才真正修改的dns记录,所以实现了博客不下线地转移。

迁移完成立刻就发现了一个问题:首页无限重定向。
这个倒是不难办,把原来所用的 nginx 虚拟主机配置文件中一些针对不同文件类型做的配置全部去掉,只保留了反向代理给 varnish 的语句,首页正常打开,后台也正常。经测试插件配置、启停、增删都没有问题。

很快就发现,博客的重定向不正确,也就是 WordPress 后台中的固定链接设置无法生效,访问自定义链接的页面打开的是首页。
安装了 Permalink Fix & Disable Canonical Redirects Pack 插件,但是还是无法正常。(需要注意下面的语句是建立在此插件启用的基础上的,停用插件后还是会出错)

经过一番搜索和实验,其实就是一句话的事情。向博客配置的 location / {} 段加入:

这样就解决了基本的固定链接功能支持。但是因为我博客设置特殊,需要将 /45 和 /ngc45 这样的链接都自动转向 /NGC45 形式,以前用 LAMP 时在 .htaccess 中写入下面的语句即可:

但是 nginx 是不支持 .htaccess 的,重定向规则要写在配置文件里面才行,查阅 wiki 加上实验的结果是这样:

把自定义的两条 rewrite 规则放在前面是因为逐条执行时要先跳转 url 后作为固定链接传递给 WordPress 程序,否则就会404错误,而用引号来包含正则表达式则是按照官方wiki的说明进行的。

此设置在我的博客上实际可用。

{ 发表评论? }

  1. 柠檬菌 Localhost Google Chrome Windows

    发来贺电

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注