WordPress评论链接重定向跳转(修正代码)

看到万戈童鞋写的《Wordpress 评论链接重定向跳转》一文,有点小想法,呵呵。看到下文,你可能会有感觉,哈哈,我是不是很淫蕩?
现在你点一下我博客中评论者的链接,有什么发现?
关于为什么要弄个这个玩意儿,我爱水煮鱼那条鱼有说明,下面简单摘录下:
如果外链很多都是链接到垃圾站,会让导致博客在搜索引擎(主要是百度)中的降权,直接导致排名下降。本文的方法就是要使得 Spammer 即使成功留言了,也不会被搜索引擎索引。主要功能是把留言者的链接和留言中链接的 URL 转化为一个跳转链接,如:

http://www.ihacklog.com/l.php?url=www.life-studio.cn

然后手工在 robots.txt 中添加一行以下代码即可:

Disallow: /l.php?url=*

这样所有留言区的链接既不会被搜索引擎索引,更不会给予权重。
但是我在万戈童鞋和鱼童鞋的基础上加了点东东,就是让外链在框架中显示,如果不需要这个,可以把下面说到的l.php文件中的

$directGo=false;

修改为

$directGo=true;

还有就是为了方便,我把css ,javascript 和图片,全部放在一个php文件里了,同时为了减轻index.php的負担,避免全局加载(init),我用一个单独的文件l.php,而不是通过

add_action(‘init’, ‘redirect_comment_link’);

这样的方式把处理链接的任务塞给index.php 。

如果你也想和我一样淫蕩,那就请看下文吧:

注:以下代码于2010年7月30日重新修正。
修正后:
支持SSL链接
支持后面带参数的链接(即带?的链接,如果是手动写URL,注意把?替换为orz__ )

本文相关文件下载(2010年7月30日新增):

0×01 .将下面的代码保存为l.php,上传到博客根目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<?php
$directGo=FALSE;//是否直接跳转
$errorPage='http://www.ihacklog.com/error.html';
$home='http://www.ihacklog.com';
$refer= empty($_SERVER['HTTP_REFERER'])?'http://www.ihacklog.com':$_SERVER['HTTP_REFERER'];

function printPic($pic)
{
header('Content-Type: image/gif');
switch ($pic)
{
case 'fav':
echo base64_decode('R0lGODlhEAAQAMQfAMrJuFSX3cjk/7TU96TM8/H+/3Ss5+Xkz63R+Gik49fWw5K+7MXb6F2UzE+T2Z/I83qw6MDe+5fE8pvC5lGNypLF+s/q/0iO1ZfL/Xu18U6LzZDA8Vma3JnL/Wec0f///yH5BAEAAB8ALAAAAAAQABAAAAWD4CeOH8OQKFphaYsVRdeqcDWXRGbtVkacogUksSEILJGIRUDYJCCbQSKJQAyqWEFk+iEkEJKN5CEJPxDf0dDANkDaT9QiEeAE7oHEIrW4BBx3gBcTKQYXFxwODokXECmAiRSSHIkpGhQNhB8TDRQaKQ0eACQAAA0jBwqlAAoHrq6rrCEAOw==');
break;
case 'nt':
echo base64_decode('R0lGODlhEAAQAOZ/AADOy8vxudPzuFTVgqfguXXs4HLMdTHDa+j5y5T6xnbqmQDA2ACz1wDb0Ry+yND22bbop4TUxQDvX8/6ywC2yrz01ZL12gDEV3rWfADI6gCkzQDf4T7o4qzpnkr0xQDuxMbytGW/bACaJAClRIjpjQDydADeYQDUzU2wYDa0bPb89v3+/e337wCmN9j33l/miADM2sHorITqn23ikWzajVDGfADVbkbTdxjdb6fmlwDK4ADtggDK1wDK5ADtoZbr3SXJ0pHfzXf+uY/8uQDXUgDN2gDeZQCpUJ/ozZrmrZzkxbHevnjynwDgvwDlsQDsZwDF7QDKgQC4jwDC1ADEhgDG4wCeLwDDvgDG2aDZjgDseADCqY3XpQng5ACwTGT8zgDYyADcvwDwrrrqzADnuHbjyXPj2t/2w3Pu04nt1mr+tQDg1bLuqgDR2/f9+ADplgDeigDzfZTShwDL1ADYXLvkx8301Q/fbwD8oAC4QgDC3gDC6JPhlxLjdHvfhP///yH5BAEAAH8ALAAAAAAQABAAAAf5gH+Cfy4KfUYmdwoPg4MrMiZsAWNISkl0M26OLyQID3ZpP2ZmQTQ3KoIyJGcTDxUFBV0bDUoYA4QmCENCCRYcHEVzTUwgeWMKHQFqXxUbGzAnPnFxfFk1fQJMeBYVbTBrJRISTzcxXkZnOyUeaAsnH2JaEkQHAS0mZ31vHgs6DCdkwlyhkiKAFRwBXnxooCdDBgYaNFDYEgLCiBk5OsBxskAPlD0QKUjBICeFnQsCbNgAsADKwy1RUMQQsWQFDQw5BoCZ0qMKhQMo5IRIIUjFAQMgygDhgcWBHwghjrAYpKJGCy4RshKQIyLF1EZ/6hwYYcXKiBRLGgUCADs=');
break;
default:
echo base64_decode('R0lGODlhGAAYANUAAEuM9yZfvDBqy8TExPr6+v7+/tHR0e3t7e7u7uDg4Cxmxru7uyljwc3Nzenp6fv7++Xl5fLy8tjY2N7e3vDw8O/v7y1drNTU1MbT6Obm5sjIyMXFxb3M5b+/vzBfrfT09Ly8vBlPpjl22vHx8eTk5EhytuHh4eLi4iRct/n5+f39/RpQqPf39zNu0Dt43CFYsxxSqx5Vr97d3UOD6/z8/Pb29hdMo////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAYABgAAAb/wJtwSCwajZiSbclsLkuY480iAlivWKvIUiwIbbOweDy2Cb031dfFbt/acHNaSPu27nchfi+neQlfAoICQ4OGcgReKV8KjVKNCnIpaixfDJcymZqZlwxyLJRfAaMBmqSnn3U1XyitrZmusXI1ql8vt7gyuLuztTc2McHCw8O9N6u/MMrLzMzGNWoeISvU1dbUIR5ptMeLHBZO4TYWHDcp3DUID1JSDwjcLAgkI4DsQgQjJAgsdSwUEBIaDOgAYoHBgyA6DGggAQIFUOYiOJhwoYGGDQMyatygocGFCQ4iTLpBoEaFDBMkXDDAsiXLCxImZKhQI9ENGik+VHAA4YSJNQRAg5o4AcFBhQ8p/KR5cC4CBQQHokqNioBChBopHqi5UUAFDQIpWLCoQbYsWbEpCNBQgSYIADs=');
}
}

if(!empty($_GET['pic']))
{
printPic($_GET['pic']);
}


//启用GIP
if (function_exists('ob_gzhandler'))
{
    ob_start('ob_gzhandler');
}
else
{
    ob_start();
}


if(empty($_GET['url']) && empty($_GET['pic']) )
{
    header('Location:'.$errorPage);
       exit();
}
else
{  
    $uri=$_SERVER['REQUEST_URI'];
    $url= preg_replace('@\/l\.php\?url=@i','',$uri,1) ;
    $url=preg_replace( '@orz__@','?',$url,1);
    $url =htmlspecialchars(strip_tags($url));
        if(false !==strpos($url,'aHR0cDovL') )
            $url=base64_decode($url);
        $url=(!preg_match("/^http(s)?\:\/\//i", $url))? "http://".$url:$url;
       

       if(strpos($_SERVER['HTTP_REFERER'],$home)===false)  //非本站引用
       {
        header('Location:'.$errorPage);
        exit();
       }
       
        if($directGo) //若設定了直接跳转    
        {
        header('Location:'.$url);//直接跳转
                exit();
        }

}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>【Hacklog 荒野无灯weblog】 - http://www.ihacklog.com/ - Powered by 荒野无灯</title>
<script language="javascript" type="text/javascript" >
var userAgent = navigator.userAgent.toLowerCase();
var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
var is_moz = (navigator.product == 'Gecko') && userAgent.substr(userAgent.indexOf('firefox') + 8, 3);
var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);
var is_safari = (userAgent.indexOf('webkit') != -1 || userAgent.indexOf('safari') != -1);
//iframe包含
if (top.location != location) {
    top.location.href = location.href;
}
//复制URL地址
function setCopy(_sTxt){
    if(is_ie) {
        clipboardData.setData('Text',_sTxt);
        alert ("网址“"+_sTxt+"”\n已经复制到您的剪贴板中\n您可以使用Ctrl+V快捷键粘贴到需要的地方");
    } else {
        prompt("请复制网站地址:",_sTxt);
    }
}

function mybookmark(title,url){
   
                    var title=title?title:document.title;
                    var url=url?url:document.location.href;
                    if(document.all)
                    window.external.AddFavorite( url, title);
                   
                    else if (window.sidebar)
                    window.sidebar.addPanel(title, url,"");
                   
                    else if( window.opera && window.print )
                    {
                    var mbm = document.createElement('a');
                    mbm.setAttribute('rel','sidebar');
                    mbm.setAttribute('href',url);
                    mbm.setAttribute('title',title);
                    mbm.click();
                    }
                   
                    }

</script>
<style type="text/css">
* { word-break: break-all; word-wrap: break-word; }
body, th, td, input, select, textarea, button { font: 12px/1.5em Verdana, "Lucida Grande",Arial, Helvetica,sans-serif; }
body, h1, h2, h3, h4, h5, h6, p, ul, dl, dt, dd, form, fieldset { margin: 0; padding: 0; }
h1, h2, h3, h4, h5, h6 { font-size: 1em; }
ul li { list-style: none; }
a {color: #2C629E; text-decoration: none; }
a:hover { text-decoration: underline; }
a img { border: none; }
.link_td { text-align:right;width: 100%; height: 26px; border-bottom: 1px solid #DDD; background: #EEE; padding-left:1em; font-size:12px; }
.link_td a { color: #333; }
textarea { border: 1px solid #ddd; overflow: auto; }
.t_input { padding: 3px 2px; border: 1px solid #ddd; line-height: 16px; }
</style>
</head>

<body scroll="no">
<div id="append_parent"><iframe id="ajaxframe" name="ajaxframe" width="0" height="0" marginwidth="0" frameborder="0" src="about:blank"></iframe></div>
<div id="ajaxwaitid"></div>

<table border="0" cellPadding="0" cellSpacing="0" height="100%" width="100%">
<tr>
<td height="26" class="link_td">

您正在浏览的网站是:<img src="l.php?pic=nt" align="absmiddle"> <a target="_blank" href="<?php echo $url; ?> "><?php echo $url; ?></a> (<a href="javascript:;" onclick="javascript:setCopy('<?php echo $url; ?>');return false;">复制</a>)<span class="pipe">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;</span>
<img src="l.php?pic=back" align="absmiddle"> <a href="<?php echo $refer; ?>">返回</a> <span class="pipe">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;</span>
<img src="l.php?pic=fav" align="absmiddle"> <a href="#" onclick="javascript:mybookmark('Hacklog [荒野无灯weblog]','http://www.ihacklog.com/');return false;" title="把Hacklog [荒野无灯weblog]添加到收藏夹">收藏本站</a>

</td>
</tr>
<tr>
<td>
<iframe id="url_mainframe" frameborder="0" scrolling="yes" name="main" src="<?php echo $url; ?>" style="height: 100%; visibility: inherit; width: 100%; z-index: 1;overflow: visible;"></iframe>
</td>
</tr>
</table>
</body>
</html>

0×02: 修改你目录使用的主题下的functions.php ,在最后的

?>

符号前加上如下代码:

1
2
3
4
5
6
7
8
9
//comments link redirect
add_filter('get_comment_author_link', 'add_redirect_comment_link', 5);
add_filter('comment_text', 'add_redirect_comment_link', 99);
function add_redirect_comment_link($text = '')
{
    $text=str_replace('href="http://', 'href="'.get_option('home').'/l.php?url=', $text);
    $text=str_replace("href='http://", "href='".get_option('home')."/l.php?url=", $text);
    return $text;
}

0×03:(如果你不想要在编辑器里插入链接时也自动加上l.php?url=,那么可以不做这一步) 打开/wp-includes/js/quicktags.js
查找

function edInsertLink(d,c,b)

修改成如下(注意把其中的网站URL修改成你自己的):

1
function edInsertLink(d,c,b){if(!b){b="http://"}if(!edCheckOpenTags(c)){var a=prompt(quicktagsL10n.enterURL,b);if(a){ a=a.replace('http://','');a=a.replace('?','orz__'); edButtons[c].tagStart='<a target="_blank" href="http://www.ihacklog.com/l.php?url='+a+'">'; edInsertTag(d,c)}}else{edInsertTag(d,c)}}

quicktag_link

现在看下效果:

add_link

add_link2

iframe_link_content

喜欢这篇文章吗?

请订阅本站 RSS feed填写您的邮件地址,订阅我们的精彩内容:

相关日志

回复 (56)

  1. 折子戏  / 回复

    您好博主,为什么使用代码后完全没效果?

  2. 希丸嘉  / 回复

    把文章链接写成 http://ihacklog.com/gogogo/aHR0cDovL+Wfn+WQjS9sLnBocD91cmw95aSW6ZO+ 这样子为什么会转到403页面的?但是评论作者链接正常啊。求助。

  3. 两天  / 回复

    按提示弄好了,可打开显示404页面。。。。 :!:

  4. 音符  / 回复

    我已按照您的方法做,可为什么还是默认 原来的go.php,什么问题?

  5. isofts  / 回复

    我的网站是www.isofter.cn
    那我现在按照你帖子里面的说法:http://www.isofter.cn/l.php?url=www.life-studio.cn
    那这种地址应该可以访问啊?
    为什么我访问后也是跳转到我的首页?不信你试试!

    • 荒野无灯  / 回复

      不清楚您是怎么访问的。这个文件是不允许直接访问的。PHP文件我已经发送到你的GMAIL邮箱了,请注意查收。

  6. isofts  / 回复

    都修改的啊!我怎么还是那样 直接跳转到自己的主页啊

  7. isofts  / 回复

    想利用你的l.php 上传后为什么我直接访问你的l.php会跳转到首页? 这个需要服务器有什么要求吗?

    • 荒野无灯  / 回复

      呃,以为都知道呢。忘记说了下,其实我在代码中也提到了,这里都要修改成你自己的网址:

      1
      2
      3
      $errorPage='http://www.ihacklog.com/error.html';
      $home='http://www.ihacklog.com'; //这里定义你的博客的访问地址,请注意修改为你自己的
      $refer= empty($_SERVER['HTTP_REFERER'])?'http://www.ihacklog.com':$_SERVER['HTTP_REFERER'];
  8. 摩凝(M.Chan)  / 回复

    哈哈,确实很淫荡,也很实用…… :mrgreen: 谢谢分享。试用了一下,还不错,现在来研究一下你自己正用着的这个加密的。

  9. 为你牵挂  / 回复

    这个很好,我要学习学习啊

  10. mcooo  / 回复

    如果能改成这样“http://www.ihacklog.com/#/xxx”,xxx为文章ID,这样的样式会不会拖慢程序上速度啊。

    • 荒野无灯  / 回复

      呃,建议你先了解一下rewrite 的相关知识。其实那个效率,相差其实不大,如果想要速度快,可以连WP本身的固定链接都不启用。

      • mcooo  / 回复

        我想实现如果地址栏上的地址为http://www.ihacklog.com/#/xxx,然后如何让它自动跳转到正确的地址http://www.ihacklog.com/xxx,上 :?:

        谢谢!

  11. yong119  / 回复

    好像升级了啊,加密了,呵呵,不知道什么时候能分享一下 :grin:

  12. mcooo  / 回复

    “?url=”可以不可改为”go/”,呵呵,我总认为这“?”对SEO不太友好, :razz:

    如能改成这样http://www.ihacklog.com/go/aHR0cDovL3d3dy5paGFja2xvZy5jb20,就好了, :roll:

    • 荒野无灯  / 回复

      可以实现,但是个人认为这样用rewrite的话会增加wp或者服务器的负担,所以就没有弄。 :cool:

      • mcooo  / 回复

        那么如何做,我太菜了!

      • mcooo  / 回复

        是不是像“?url=”这样不增加wp或者服务器的负担 :?:

        • 荒野无灯  / 回复

          我这样做不调用wp的文件,调用的是自己的文件,并且只有一个,当然更小巧,如果你要URL美化,那就不同的。或者用WP的rewrite规则实现,或者自己用.htaccess实现,都会在一定程序上拖慢速度的。

          • mcooo 

            博主用WP的rewrite规则如何实现,可我实现不了,来请教下! :idea:

  13. 老实人博客  / 回复

    很好很好的文章。可惜我是用ZB的。不是PHP。不晓得能不能改过来。谢谢分享

  14. 随缘  / 回复

    为什么我改了之后点留言者还是显示网址?而不是l.php?url=xxxxxxxx呢 :!:

    • 荒野无灯  / 回复

      如果你确实按我上面的方法修改了也不行的话,除非你的主题是非标准主题。也就是说它的评论显示不是用的

      1
      wp_list_comments

      这个函数,评论者链接也不是用的

      1
      <?php comment_author_link(); ?>

      你仔细检查下看。

  15. 豬頭六  / 回复

    兄弟好文章,你那个l.php文件能发我一份么?我复制下来怎么不对呢,嘿嘿。谢过了。你这篇文章我看过好几遍了,一个月前来过,当时忙,没搞,现在想给我的博客也加上这个功能。

  16. Dianso  / 回复

    请问怎么把链接弄成新窗口打开啊?

  17. 朵未  / 回复

    不知道到为什么,我就是不行~有人刷和缓存插件有关也换了,还是不行。。。

  18. 西门  / 回复

    您好,不知道您能不能看见我的回复。我就想问下,如果我就一个html导航页面,因为是导航,所以有很多其他网站的链接。但是我又不想被别人分掉PR,看了您这篇文章后,觉得这个办法好。但是能不能在我的页面也实现呢?

  19. skyjust  / 回复

    为什么不用nofollow呢?

  20. 笑望书  / 回复

    貌似可以了,很强大很淫荡了,不过好像连自己站内的链接也会加上跳转,如果能判断站内连接不加跳转那真是太太淫荡了

  21. 笑望书  / 回复

    谢谢了,我先按你的方法去试一下,不懂再来请教

  22. 笑望书  / 回复

    能不能把Wordpres文章里的外链也实现重定向跳转?你这里讲的是对评论里的外链实现跳转,本人不懂php语言,很想实现文章里的外链也跳转的效果,你能不再淫荡一下?

    • 荒野无灯  / 回复

      @笑望书, 可以,没问题。呵呵

    • 荒野无灯  / 回复

      @笑望书, 既然我已经淫荡一次了,再淫荡一次又何妨呢?呵呵
      只须加一行代码:
      add_filter(‘the_content’, ‘add_redirect_comment_link’, 99);

      • 笑望书  / 回复

        @荒野无灯,

        去看了万戈的文章,还是弄不明白,你说的只须添加
        add_filter(’the_content’, ‘add_redirect_comment_link’, 99);
        不知道把这个添加到哪里呢?

        • 荒野无灯  / 回复

          @笑望书, 当然是add_filter(‘comment_text’, ‘add_redirect_comment_link’, 99);这一行下面。其实如果你能看懂php代码的话,随便怎么加。

        • 笑望书  / 回复

          @笑望书,

          就是不懂php语言,让你见笑了,你的博客IE6无法复制代码,用firefox就可以了,看来是不是只有我这么落后的人才用IE6

    • 荒野无灯  / 回复

      @笑望书, 不过直接加add_filter(’the_content’, ‘add_redirect_comment_link’, 99);可能会使某些图片特效插件失效哦。比如http://www.hacklog.cn/wordpress/wpskills/use-highslide-for-wordpress.html

  23. 起衣  / 回复

    太淫荡叻…我还是用简单点的…

  24. CrossYou  / 回复

    是不是用了一个框架页面的,我以前在discuz上看过这种形式。

  25. CrossYou  / 回复

    很好很强大。

  26. 万戈  / 回复

    你太强大了,不得不佩服!

发表评论 修改评论取消编辑

允许使用的标签 - 您可以在评论中使用如下的 HTML 标签以及属性。

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 :wink:  :-|  :-x  :twisted:  :)  8-O  :(  :roll:  :-P  :oops:  :-o  :mrgreen:  :lol:  :idea:  :-D  :evil:  :cry:  8)  :arrow:  :-?  :?:  :!:

引用通告 (4)

  1. 8:38 下午, 2010年10月7日Favicon of liguoqi.comHebm. Rocky » 链接重定向跳转
开灯