我将我的wordpress多站点从子目录(subdirectory)改为子域名(subdomain)后,希望用户能够在多站点间实现单点登录(SSO),但是始终不能实现。cookie不能共享。经仔细查看代码,发现在ms-default-constants.php文件中有如下代码:
/**
* @since 2.6.0
*/
if ( !defined( 'ADMIN_COOKIE_PATH' ) ) {
if( !is_subdomain_install() ) {
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH );
} else {
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
}
}
就因为define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );导致cookie的有效路径为/wp-admin,其他目录及根目录都不能共享auth_cookie,解决办法如下:
在wp-config.php中增加:
define('COOKIE_DOMAIN', '.xxx.com');
define('ADMIN_COOKIE_PATH', '/');
问题得到解决。