WordPress开启CDN之后提取IP错误解决教程

5,808次阅读
28条评论

WordPress

前言

用过 CDN 的朋友都知道,如果 WordPress 开启 CDN 之后别人在你的文章中评论,IP 则显示的是该人所在地区的 CDN 节点的 IP,而不会显示该人的真实 IP,这样的话其实不会有很大的问题,不过对于垃圾评论过多的网站来说,这无疑是一个噩梦,因为不可以进行 IP 拦截。

解决办法(一)

本人之前在网上找了很多的方法,之后在网上找到了如下的解决办法,把改代码加入到 wp-config.php 的 <?php 之后,之前一直都不适用,后来经过反复调试发现是参数调取错误。
源代码如下

if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}

我们要把里面的

HTTP_X_FORWARDED_FOR

更改成为自己所用的 CDN 的来源 IP 端口,例如又拍云的就为

HTTP_X_REAL_IP

所有我们调用又拍云的来源 IP 的时候在 wp-config.php 中就应该这样写:

if(isset($_SERVER['HTTP_X_REAL_IP'])) {$list = explode(',',$_SERVER['HTTP_X_REAL_IP']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}

解决办法(二)

根据上面的参数,我们也可以得出下方的方法,在主题的 functions.php 中底部添加以下代码:

function GetIP()
{$IP = str_replace(“,“,“”,str_replace($_SERVER['REMOTE_ADDR'],“”,$_SERVER["HTTP_X_REAL_IP"]));
if ($_SERVER["HTTP_X_REAL_IP"] !=“”) {$_SERVER['REMOTE_ADDR'] =
$IP;
} else {$_SERVER['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR'];
}}add_action(‘init’,‘GetIP’);

转载本文章请注明出处,一经发现转载未留出处将会对贵站进行拉黑处理。
5
憧憬Licoy
版权声明:本站原创文章,由 憧憬Licoy 2016-03-14发表,共计948字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(28条评论)
验证码
载入中...
明月登楼 评论达人 LV.2
2016-10-29 15:55:07 回复

我最近CDN上碰到缩略图总是不更新,只有清除浏览器缓存后才会更新,郁闷呀!

WindowsWindowsChromeChrome54.0.2840.71
我爱动感单车网 评论达人 LV.1
2016-10-16 23:18:39 回复

想要让定时发布的新文章以及最新评论尽可能的及时予以显示,节点缓存有效期以及浏览器缓存时间,如何设置比较好,还望博主分享下说说你的使用经验。

WindowsWindowsChromeChrome45.0.2454.101
懿古今 评论达人 LV.1
2016-09-12 08:54:52 回复

垃圾评论确实很猖狂,我都是通过关键词来屏蔽的,效果还行

WindowsWindowsChromeChrome45.0.2454.101
    憧憬Licoy 博主
    2016-09-12 09:37:58 回复

    @懿古今 我的评论数量每天没多少,手动就可以了,关键词也增加了一些。

    WindowsWindowsChromeChrome52.0.2743.116