Wordpress多域名部署

事情起因:部门博客由于安全问题,需要把管理后台迁移到内网,也就是将wp-admin那一堆东西部署到内网域名上。

最简单直接的方式就是申请另外一个域名然后解析到同一个服务器的同一个项目下,通过NG对外网域名访问后台的路由做rewrite。

举个很简单的例子,原本有一个Wordpress网站 http://a.example.com(后称对外网站A),管理后台站点http://b.example.com(后称后台网站B)。访问A的登录页面会跳转到B的登录页面,在外网情况下,自然登录页面无法打开,而在内网的情况下A和B都能打开。这样达到了外网屏蔽管理后台的作用。

但是有个问题:如何同步登录态呢?

举个例子:在A上登录的时候会跳转到B的登录页面,B登录完之后需要保持A的登录态。

解决方法

幸好,wordpress在写入cookie方面已经做好了预留方案,我们只需要稍微改下配置即可:

编辑wp-config.php,在任意位置添加如下内容:

1
2
3
define('COOKIE_DOMAIN', 'example.com');
define('COOKIEPATH', '/');
define( 'COOKIEHASH', md5( 'example.com' ) );

这样修改之后即可,那我们来看看这个实现的原理是什么?其实很简单,就是把cookie写到顶级域名下,这样在二级域名下都可获取到cookie,从而实现登录态的同步。