方案一
经常看到一些博客点击外链跳转到其他网站上的时候都会有一个跳转页面,很是漂亮。据说是有利于SEO,保护站点权重,不过个人只是觉得好看、高逼格便加上了 。网上相关的源代码很多,只是代码使用的方法不太详细,对于很多新手小白可能并不友好,希望能够帮助新人快速地使用上这个跳转功能。
新建跳转页面
首先,将一下代码(来自孟坤博客)复制并保存为一个 index.php
文件丢到网站根目录的 go
文件夹下
<?php
/**
* 带有来路验证和跳转提示功能的跳转页面
* @auth 孟坤博客
* @authUrl http://mkblog.cn
* @data 2017/3/13
* @url https://mkblog.cn/701
*/
// 请将这里的网址改为自己的(顶级)域名地址
$myDomain = 'mkblog.cn';
// 这里用正则提取 $_SERVER["QUERY_STRING"] 而不是直接 get url
// 是因为如果链接中自身带有 GET 参数则会导致获取不完整
preg_match('/url=(.*)/i', $_SERVER["QUERY_STRING"], $jumpUrl);
// 如果没获取到跳转链接,直接跳回首页
if(!isset($jumpUrl[1])) {
header("location:/");
exit();
}
$jumpUrl = $jumpUrl[1];
// 判断是否包含 http:// 头,如果没有则加上
preg_match('/(http|https):\/\//', $jumpUrl, $matches);
$url = $matches? $jumpUrl: 'http://'. $jumpUrl;
// 判断网址是否完整
preg_match('/[\w-]*\.[\w-]*/i', $url, $matche);
// 是否需要给出跳转提示
$echoTips = false;
if($matche){
// 如果是本站的链接,不展示动画直接跳转
if(isMyDomain($url, $myDomain)) {
header("location:{$url}");
exit(); // 后续操作不再执行
}
$title = '页面加载中,请稍候...';
$fromUrl = isset($_SERVER["HTTP_REFERER"])? $_SERVER["HTTP_REFERER"]: ''; // 获取来源url
// 如果来源和跳转后的地址都不是本站,那么就要给出提示
if(!isMyDomain($fromUrl, $myDomain)) {
$echoTips = true;
}
} else { // 网址参数不完整
$url = '/';
$title = '参数错误,正在返回首页...';
}
/**
* 判断是不是自己的域名
* @param $domain 要进行判断的域名
* @param $my 自己的域名
* @return 对比结果
*/
function isMyDomain($domain, $my) {
preg_match('/([^\?]*)/i', $domain, $match);
if(isset($match[1])) $domain = $match[1];
preg_match('/([\w-]*\.[\w-]*)\/.*/i', $domain.'/', $match);
if(isset($match[1]) && $match[1] == $my) return true;
return false;
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<?php
if($echoTips) {
echo '<title>跳转提示</title>';
} else {
echo '<meta http-equiv="refresh" content="0;url='.$url.'">';
echo '<title>'.$title.'</title>';
}
?>
<style>
body{background:#fff;font-family:Microsoft Yahei;-webkit-animation:fadeIn 1s linear;animation:fadeIn 1s linear}
@-webkit-keyframes fadeIn{from{opacity:0}
to{opacity:1}
}@keyframes fadeIn{from{opacity:0}
to{opacity:1}
}#circle{background-color:rgba(0,0,0,0);border:5px solid rgba(0,183,229,0.9);opacity:.9;border-right:5px solid rgba(0,0,0,0);border-left:5px solid rgba(0,0,0,0);border-radius:50px;box-shadow:0 0 35px #2187e7;width:50px;height:50px;margin:0 auto;position:fixed;left:30px;bottom:30px;-moz-animation:spinPulse 1s infinite ease-in-out;-webkit-animation:spinPulse 1s infinite ease-in-out;-o-animation:spinPulse 1s infinite ease-in-out;-ms-animation:spinPulse 1s infinite ease-in-out}
#circle1{background-color:rgba(0,0,0,0);border:5px solid rgba(0,183,229,0.9);opacity:.9;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-radius:50px;box-shadow:0 0 15px #2187e7;width:30px;height:30px;margin:0 auto;position:fixed;left:40px;bottom:40px;-moz-animation:spinoffPulse 1s infinite linear;-webkit-animation:spinoffPulse 1s infinite linear;-o-animation:spinoffPulse 1s infinite linear;-ms-animation:spinoffPulse 1s infinite linear}
@-webkit-keyframes spinPulse{0%{-webkit-transform:rotate(160deg);opacity:0;box-shadow:0 0 1px #505050}
50%{-webkit-transform:rotate(145deg);opacity:1}
100%{-webkit-transform:rotate(-320deg);opacity:0}
}@-webkit-keyframes spinoffPulse{0%{-webkit-transform:rotate(0deg)}
100%{-webkit-transform:rotate(360deg)}
}#loading-text{position:fixed;left:110px;bottom:35px;color:#736D6D}
@media screen and (max-width:600px){#circle,#circle1{left:0;right:0;top:0;bottom:0}
#circle{margin:120px auto}
#circle1{margin:130px auto}
#loading-text{display:block;text-align:center;margin-top:220px;position:static;margin-left:10px}
}
.warning{max-width: 500px;margin: 20px auto;}
.wtitle {font-size: 22px;color: #d68300;}
.wurl {overflow: hidden;text-overflow: ellipsis;white-space: nowrap;color: #827777;}
.btn {display: inline-block;line-height: 20px;cursor: pointer;border: 1px solid #A9A6A6;padding: 6px 10px;font-size: 14px;text-decoration: none;}
.btn-green {color: #fff;background-color: #238aca;border: 1px solid #238aca;}
.btn:hover {background-color: #A9A6A6;border: 1px solid #A9A6A6;color: #fff;}
</style>
</head>
<body>
<?php if($echoTips) { ?>
<div class="warning">
<p class="wtitle">您将要访问:</p>
<p class="wurl" title="<?php echo $url;?>"><?php echo $url;?></p>
<p>该网站不属于孟坤博客,我们无法确认该网页是否安全,它可能包含未知的安全隐患。</p>
<a class="btn btn-green" href="<?php echo $url;?>" rel="nofollow">继续访问</a>
<span class="btn" onclick="closePage()">关闭网页</span>
</div>
<script>
function closePage() {
// 通用窗口关闭
window.opener=null;
window.open('','_self');
window.close();
// 微信浏览器关闭
WeixinJSBridge.call('closeWindow');
}
</script>
<?php } else { ?>
<div id="circle"></div>
<div id="circle1"></div>
<p id="loading-text">页面加载中,请稍候...</p>
<?php } ?>
</body>
</html>
以百度为例,如果你 点击 https://www.liues.cn/go/?url=www.baidu.com 访问,直接就跳转了,如果你手动复制这个跳转网址再粘贴到浏览器访问,则会弹出提示。
如果是本站的站内链接,如 https://www.liues.cn/go/?url=www.liues.cn 无论以何种方式打开都是直接跳转。
这里需要说明的是你也可以直接保存为 go.php 丢在网站根目录下,只不过后面修改链接的时候将 go 替换成 go.php 即可。
跳转页面使用
将上述 index.php 文件丢到网站根目录下的 go 文件夹后,我们既可以通过 https://www.liues.cn/go/?url=https://www.baidu.com 实现 go 页面跳转了,但是这样每次添加外链都手动添加的话太麻烦,使用下面的代码既可以实现外链自动添加 http://yourdomain.com/go/?url=
文章内外链添加go跳转
将以下代码丢入你的主题的functions.php
中
//文章内外链添加go跳转
function the_content_nofollow($content){
preg_match_all('/<a(.*?)href="(.*?)"(.*?)>/',$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)){
$content=str_replace("href=\"$val\"", "href=\"".home_url()."/go/?url=$val\" ",$content);
}
}
}
return $content;
}
add_filter('the_content','the_content_nofollow',999);
如果你直接将 Go 页面代码保存成 go.php 的话记得改一下上面链接哦~
评论者链接添加go跳转
同样将以下代码丢入你的主题的functions.php
中
//评论者链接添加go跳转
function add_redirect_comment_link($text = ''){
$text=str_replace('href="', 'href="'.get_option('home').'/go/?url=', $text);
return $text;
}
add_filter('get_comment_author_link', 'add_redirect_comment_link', 5);
add_filter('comment_text', 'add_redirect_comment_link', 99);
如果你直接将 Go 页面代码保存成 go.php 的话记得这里也要改一下链接哦~
一般情况下我们将站点的这两处链接替换掉就可以了,当然如果你有其他需要只需要想办法将原有外链替换为带有 /go/?url= 的就可以了。
转载自:
https://cloud.tencent.com/developer/article/1154631
或者:
方案二
跳转样式
go跳转设置了5秒缓冲时间,效果如下
实施方案
首先
在网站根目录创建一个名字为 go 的文件夹,并在该文件夹中创建 index.php 文件,粘贴下面的代码:
<?php
/**
* WordPress外链go跳转页面 – https://www.wpcto.cn/art/133.html
* @copyright (c) Emlog All Rights Reserved
*/
//自定义跳转地址
$cars = array(
array(“qcloud”,’https://cloud.tencent.com/act/cps/redirect?redirect=1062&cps_key=bc4ac258a3acaab0cc9ee821ab4a7c6c&from=console’),
array(“trustutn”,’http://c.trustutn.org/s/zhzz.org’),
array(“360scan”,’http://webscan.360.cn/index/checkwebsite/url/zhzz.org’
);
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 = htmlspecialchars(preg_replace(‘/^url=(.*)$/i’,’$1′,$_SERVER[“QUERY_STRING”]));
//此处可以自定义一些特别的外链,不需要可以删除以下5行
foreach($cars as $k=>$val){
if($t_url==$val[0] ) {
$t_url = $val[1];
$t_vip = 1;
}
}
//数据处理
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>
<!–
@name:aeink goto
@description:AE博客跳转页面
@author:墨渊
@time:2017-09-22
@copyright:AE博客&墨渊
@author url:http://www.aeink.com/791.html
@ps:你想删我也拦不住看你自觉性吧!!
–>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<meta name=”viewport” content=”width=device-width”>
<meta name=”robots” content=”noindex, nofollow” />
<noscript><meta http-equiv=”refresh” content=”1;url='<?php echo $url;?>’;”></noscript>
<meta charset=”UTF-8″>
<!–[if IE 8]>
<style>
.ie8 .alert-circle,.ie8 .alert-footer{display:none}.ie8 .alert-box{padding-top:75px}.ie8 .alert-sec-text{top:45px}
</style>
<![endif]–>
<title><?php echo $title;?></title>
<style>
body{margin:0;padding:0;background:#E6EAEB;font-family:Arial,’微软雅黑’,’宋体’,sans-serif}.main{position:absolute;left:calc(50% – 200px);top:calc(50% – 13em)}.alert-box{display:none;position:relative;margin:auto;padding:180px 85px 22px;border-radius:10px 10px 0 0;background:#FFF;box-shadow:5px 9px 17px rgba(102,102,102,.75);width:286px;color:#FFF;text-align:center}.alert-box p{margin:0}.alert-circle{position:absolute;top:-50px;left:111px}.alert-sec-circle{stroke-dashoffset:0;stroke-dasharray:735;transition:stroke-dashoffset 1s linear}.alert-sec-text{position:absolute;top:11px;left:190px;width:76px;color:#000;font-size:68px}.alert-sec-unit{font-size:34px}.alert-body{margin:35px 0}.alert-head{color:#242424;font-size:28px}.alert-concent{margin:25px 0 14px;color:#7B7B7B;font-size:18px}.alert-concent p{line-height:27px}.alert-btn{display:block;border-radius:10px;background-color:#4AB0F7;height:55px;line-height:55px;width:286px;color:#FFF;font-size:20px;text-decoration:none;letter-spacing:2px}.alert-btn:hover{background-color:#6BC2FF}.alert-footer{margin:0 auto;height:42px;width:120px}.alert-footer-icon{float:left}.alert-footer-text{float:left;border-left:2px solid #EEE;padding:3px 0 0 5px;height:40px;color:#0B85CC;font-size:12px;text-align:left}.alert-footer-text p{color:#7A7A7A;font-size:22px;line-height:18px}
</style>
</head>
<body class=”ie8″ style=””>
<div class=”main”>
<div id=”js-alert-box” class=”alert-box” style=”display:block”>
<svg class=”alert-circle” width=”234″ height=”234″><circle cx=”117″ cy=”117″ r=”108″ fill=”#FFF” stroke=”#43AEFA” stroke-width=”17″></circle><circle id=”js-sec-circle” class=”alert-sec-circle” cx=”117″ cy=”117″ r=”108″ fill=”transparent” stroke=”#F4F1F1″ stroke-width=”18″ transform=”rotate(-90 117 117)” style=”stroke-dashoffset:-514px”></circle><text class=”alert-sec-unit” x=”100″ y=”172″ fill=”#BDBDBD”>秒</text></svg>
<div id=”js-sec-text” class=”alert-sec-text”>
3
</div>
<div class=”alert-body”>
<div id=”js-alert-head” class=”alert-head”>
<?php echo $title;?>
</div>
<div class=”alert-concent”>
<p>一万年太久,只争朝夕</p>
</div>
<a id=”js-alert-btn” class=”alert-btn” href=”<?php echo $url;?>”>立即前往</a>
</div>
<div class=”alert-footer clearfix”>
<svg width=”46px” height=”42px” class=”alert-footer-icon”><circle fill-rule=”evenodd” clip-rule=”evenodd” fill=”#7B7B7B” stroke=”#DEDFE0″ stroke-width=”2″ stroke-miterlimit=”10″ cx=”21.917″ cy=”21.25″ r=”17″></circle><path fill=”#FFF” d=”M22.907,27.83h-1.98l0.3-2.92c-0.37-0.22-0.61-0.63-0.61-1.1c0-0.71,0.58-1.29,1.3-1.29s1.3,0.58,1.3,1.29 c0,0.47-0.24,0.88-0.61,1.1L22.907,27.83z M18.327,17.51c0-1.98,1.61-3.59,3.59-3.59s3.59,1.61,3.59,3.59v2.59h-7.18V17.51z M27.687,20.1v-2.59c0-3.18-2.59-5.76-5.77-5.76s-5.76,2.58-5.76,5.76v2.59h-1.24v10.65h14V20.1H27.687z”></path><circle fill-rule=”evenodd” clip-rule=”evenodd” fill=”#FEFEFE” cx=”35.417″ cy=”10.75″ r=”6.5″></circle><polygon fill=”#7B7B7B” stroke=”#7B7B7B” stroke-linecap=”round” stroke-linejoin=”round” stroke-miterlimit=”10″ points=”35.417,12.16 32.797,9.03 31.917,10.07 35.417,14.25 42.917,5.29 42.037,4.25 “></polygon></svg>
<div class=”alert-footer-text”>
<p>secure</p>安全加密
</div>
</div>
</div>
</div>
<script type=”text/javascript”>
function alertSet(e) {
document.getElementById(“js-alert-box”).style.display = “block”, document.getElementById(“js-alert-head”).innerHTML = e;
var t = 5,
n = document.getElementById(“js-sec-circle”);
document.getElementById(“js-sec-text”).innerHTML = t, setInterval(function() {
//禁止其他网站调用此跳转
//var MyHOST = new RegExp(“<?php echo $_SERVER[‘HTTP_HOST’]; ?>”);
//if (!MyHOST.test(document.referrer)) {
// location.href=”http://” + MyHOST;
//}
if (0 == t) location.href = “<?php echo $url;?>”;
else {
t -= 1, document.getElementById(“js-sec-text”).innerHTML = t;
var e = Math.round(t / 5 * 735);
n.style.strokeDashoffset = e – 735
}
}, 970)
}
</script>
<script>alertSet(“<?php echo $title;?>”);</script>
</body>
</html>
然后
将下面的代码放在 WordPress 主题文件夹的 functions.php 文件内即可
<span style="font-size: 10pt;">function the_content_nofollow($content){ preg_match_all('/<a(.*?)href="(.*?)"(.*?)>/',$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)){ $content=str_replace("href=\"$val\"", "href=\"".home_url()."/go/?url=$val\" ",$content); } } } return $content; } add_filter('the_content','the_content_nofollow',999);</span>
参考资料
原文:
https://www.blueskyxn.com/202101/3740.html/amp/