昨天刚刚开启了评论邮件提醒功能「美化 WordPress 邮件回复样式」,就发现邮件里关于评论者的 IP 居然是错的,WordPress 自己获取了 CDN 的 IP 节点。
这样一来,就不好分析网站访客的地域关系了,而且 WordPress 自带的拦截 IP 评论功能也将会失效,所以我想要解决它。于是我在网上找了一下相关内容,后来在幻杀博客找到了完美的解决方案,下面分享给小伙伴们。
解决方案
打开 WordPress 根目录下面的 wp-config.php
文件,在文件最下方添加下面的代码:
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}
原理
在 CDN 的 HTTP 头部有记录访问者 IP 数据,那段代码就是把 WordPress 的 IP 中变量换成 $_SERVER
获取的。以上的代码可以用在任意 CDN 和反向代理上面,IP 地址是可以获取正确的。