網站內容中不免有一些外鏈,為了網站的權重不外流,也為了用戶的安全提示,油門有必要對這些外鏈添加跳轉提示功能,這篇文章給大家帶來了如何為WordPress添加外鏈go跳轉功能,希望能對大家有所幫助。
方法一:純代碼實現
首先,在自己的wordpress網站的根目錄下新建一個go.php文件,在go.php里面輸入以下代碼
<?php $t_url = preg_replace('/^url=(.*)$/i','$1',$_SERVER["QUERY_STRING"]); if(!empty($t_url)) { preg_match('/(http|https):\/\//',$t_url,$matches); if($matches){ $url=$t_url; $title='頁面加載中,請稍候...'; } else { preg_match('/\./i',$t_url,$matche); if($matche){ $url='http://'.$t_url; $title='頁面加載中,請稍候...'; } else { $url='https://www.zztuku.com/'; $title='參數錯誤,正在返回首頁...'; } } } else { $title='參數缺失,正在返回首頁...'; $url='https://www.zztuku.com/'; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="refresh" content="1;url='<?php echo $url;?>';"> <title><?php echo $title;?></title> <style> body{background:#000}.loading{-webkit-animation:fadein 2s;-moz-animation:fadein 2s;-o-animation:fadein 2s;animation:fadein 2s}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-o-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}.spinner-wrapper{position:absolute;top:0;left:0;z-index:300;height:100%;min-width:100%;min-height:100%;background:rgba(255,255,255,0.93)}.spinner-text{position:absolute;top:50%;left:50%;margin-left:-90px;margin-top: 2px;color:#BBB;letter-spacing:1px;font-weight:700;font-size:36px;font-family:Arial}.spinner{position:absolute;top:50%;left:50%;display:block;margin-left:-160px;width:1px;height:1px;border:25px solid rgba(100,100,100,0.2);-webkit-border-radius:50px;-moz-border-radius:50px;border-radius:50px;border-left-color:transparent;border-right-color:transparent;-webkit-animation:spin 1.5s infinite;-moz-animation:spin 1.5s infinite;animation:spin 1.5s infinite}@-webkit-keyframes spin{0%,100%{-webkit-transform:rotate(0deg) scale(1)}50%{-webkit-transform:rotate(720deg) scale(0.6)}}@-moz-keyframes spin{0%,100%{-moz-transform:rotate(0deg) scale(1)}50%{-moz-transform:rotate(720deg) scale(0.6)}}@-o-keyframes spin{0%,100%{-o-transform:rotate(0deg) scale(1)}50%{-o-transform:rotate(720deg) scale(0.6)}}@keyframes spin{0%,100%{transform:rotate(0deg) scale(1)}50%{transform:rotate(720deg) scale(0.6)}} </style> </head> <body> <div class="loading"> <div class="spinner-wrapper"> <span class="spinner-text">頁面加載中,請稍候...</span> <span class="spinner"></span> </div> </div> </body> </html>
使用方法:保存之后,則外鏈跳轉形式為: {本站地址}/go.php?{外鏈地址}
使用:在添加外鏈的時候,只要給外鏈加上統一的跳轉前綴:http://網站地址/go.php? 即可。
為了防止蜘蛛爬行,在 Robots 禁止所有蜘蛛爬行 /go?url 目錄!
Disallow: /go/ Disallow: /go?url
方法二:插件實現
有些插件也能實現這個外鏈跳轉
1、Simple URLs插件:設置簡單,只需要要后臺設置好后綴和目標頁面即可
2、Link-Hopper插件:跳轉鏈接的基礎地址可以隨意設置
3、Pretty Link Lite插件:后臺功能十分強大的,還有Pro版本,不過要money的。用它完全可以做一個短網址,像t.cn和bit.ly一樣。
4、Affiliate Link Cloaking插件:推廣鏈接轉換工具,用來推廣你的淘寶客等要隱藏的鏈接,可以使用它,附帶統計功能。
5、WP No External Links插件:這個一款可以自動將博客內的外部鏈接轉成內部鏈接,如 http://www.baidu.com
,則顯示為http://www.zztuku.com/goto/http://www.baidu.com
,可以嘗試使用這個插件防權重丟失的。
6、Go Codes插件:和前面的wordpress外鏈跳轉鏈接插件設置一樣簡單,帶統計功能。
注意:插件具體使用與否可以自己嘗試,這里不做太多解釋,也不對插件對錯負責。
方法三:網友推薦
創建go.php,寫入:
<?php if(strlen($_SERVER['REQUEST_URI']) > 384 || strpos($_SERVER['REQUEST_URI'], "eval(") || strpos($_SERVER['REQUEST_URI'], "base64")) { @header("HTTP/1.1 414 Request-URI Too Long"); @header("Status: 414 Request-URI Too Long"); @header("Connection: Close"); @exit; } //通過QUERY_STRING取得完整的傳入數據,然后取得url=之后的所有值,兼容性更好 $t_url = preg_replace('/^url=(.*)$/i','$1',$_SERVER["QUERY_STRING"]); //此處可以自定義一些特別的外鏈,不需要可以刪除以下5行 if ($t_url=="zztuku" ) { $t_url="//www.zztuku.com"; } elseif($t_url=="baidu") { $t_url="https://www.baidu.com/"; } //數據處理 if(!empty($t_url)) { //判斷取值是否加密 if ($t_url == base64_encode(base64_decode($t_url))) { $t_url = base64_decode($t_url); } //對取值進行網址校驗和判斷 preg_match('/^(http|https|thunder|qqdl|ed2k|Flashget|qbrowser):\/\//i',$t_url,$matches); if($matches){ $url=$t_url; $title='頁面加載中,請稍候...'; } else { preg_match('/\./i',$t_url,$matche); if($matche){ $url='http://'.$t_url; $title='頁面加載中,請稍候...'; } else { $url = 'http://'.$_SERVER['HTTP_HOST']; $title='參數錯誤,正在返回首頁...'; } } } else { $title = '參數缺失,正在返回首頁...'; $url = 'http://'.$_SERVER['HTTP_HOST']; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="noindex, nofollow" /> <noscript><meta http-equiv="refresh" content="1;url='<?php echo $url;?>';"></noscript> <script> function link_jump() { //禁止其他網站使用我們的跳轉頁面 var MyHOST = new RegExp("<?php echo $_SERVER['HTTP_HOST']; ?>"); if (!MyHOST.test(document.referrer)) { location.href="http://" + MyHOST; } location.href="<?php echo $url;?>"; } //延時1S跳轉,可自行修改延時時間 setTimeout(link_jump, 1000); //延時50S關閉跳轉頁面,用于文件下載后不會關閉跳轉頁的問題 setTimeout(function(){window.opener=null;window.close();}, 50000); </script> <title><?php echo $title;?></title> <style type="text/css"> body{background:#555}.loading{-webkit-animation:fadein 2s;-moz-animation:fadein 2s;-o-animation:fadein 2s;animation:fadein 2s}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-o-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}.spinner-wrapper{position:absolute;top:0;left:0;z-index:300;height:100%;min-width:100%;min-height:100%;background:rgba(255,255,255,0.93)}.spinner-text{position:absolute;top:45%;left:50%;margin-left:-100px;margin-top:2px;color:#000;letter-spacing:1px;font-size:20px;font-family:Arial}.spinner{position:absolute;top:45%;left:50%;display:block;margin-left:-160px;width:1px;height:1px;border:20px solid rgba(255,0,0,1);-webkit-border-radius:50px;-moz-border-radius:50px;border-radius:50px;border-left-color:transparent;border-right-color:transparent;-webkit-animation:spin 1.5s infinite;-moz-animation:spin 1.5s infinite;animation:spin 1.5s infinite}@-webkit-keyframes spin{0%,100%{-webkit-transform:rotate(0deg) scale(1)}50%{-webkit-transform:rotate(720deg) scale(0.6)}}@-moz-keyframes spin{0%,100%{-moz-transform:rotate(0deg) scale(1)}50%{-moz-transform:rotate(720deg) scale(0.6)}}@-o-keyframes spin{0%,100%{-o-transform:rotate(0deg) scale(1)}50%{-o-transform:rotate(720deg) scale(0.6)}}@keyframes spin{0%,100%{transform:rotate(0deg) scale(1)}50%{transform:rotate(720deg) scale(0.6)}} </style> </head> <body> <div class="loading"> <div class="spinner-wrapper"> <span class="spinner-text">頁面加載中,請稍候...</span> <span class="spinner"></span> </div> </div> </body> </html>
找到模板的functions.php文件添加:
/*文章外鏈跳轉偽靜態版 此為新窗口打開,如不想要直接刪除下面的tar _ ank(安全問題不能打出來) */ add_filter('the_content','link_jump',999); function link_jump($content){ preg_match_all('//',$content,$matches); if($matches){ foreach($matches[2] as $val){ if(strpos($val,'://')!==false && strpos($val,home_url())===false && !preg_match('/\.(jpg|jepg|png|ico|bmp|gif|tiff)/i',$val) && !preg_match('/(ed2k|thunder|Flashget|flashget|qqdl):\/\//i',$val)){ $content=str_replace("href=\"$val\"", "href=\"".home_url()."/go.php?".base64_encode($val)."\" rel=\"nofollow\" target='_blank' ",$content); } } } return $content; }
Nginx偽靜態設置(跳轉方式為/go/):
# 外鏈跳轉偽靜態 php版本 rewrite ^/go/(.*)$ /go.php?url=$1 last; #注意go.php的實際路徑,默認為網站根目錄
以上代碼增加了跳轉美化效果,代碼中已經用 base64 將源鏈接加密,并且加上了 nofollow,但恐怕蜘蛛還是能爬行,在 Robot s 禁止所有蜘蛛爬行 /go?url 目錄!
Disallow: /go/ Disallow: /go?url