Emlog全站实现go跳转


搞了几天.给站点加上了go跳转。据说可以防止页面权重分散..主要加在了游客评论地址,友链(友链并不建议加),和侧边栏上。百度了一圈发现没啥系统的教程,所以......
首先搞定go文件,创建一个go.php打开(最好不要用记事本)将以下代码复制进去,放到根目录或者新建文件夹“go”把go.php改成index.php,放进去。

<?php
/**
 * 带有来路验证和跳转提示功能的跳转页面
 */
// 请将这里的网址改为自己的(顶级)域名地址
$myDomain = 'zhebk.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="robots" content="noindex, nofollow" />
<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 #736d6d;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 #a9a6a6;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 #736d6d;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 #a9a6a6;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>
        <span class="btn btn-green" onclick="go();">继续访问</span>
        <span class="btn" onclick="window.close();">关闭网页</span>
    </div>
    <script>
    function go() {window.location.href = window.location.href;}
    </script>
    <?php } else { ?>
    <div id="circle"></div>
    <div id="circle1"></div>
    <p id="loading-text">页面加载中,请稍候...</p>
    <?php } ?>
</body>
</html>

代码来自-懒人的小窝。

如图这段代码能够防止他人恶意利用你的go跳转,
然后修改模板,打开模板的 module.php

搜索<a href="\'.$comment[\'url\'].\'" target="_blank">
替换<a href="/go/?url=\'.$comment[\'url\'].\'" target="_blank>
或者<a href="/go.php?url=\'.$comment[\'url\'].\'" target="_blank>
根据你`go`文件的位置

评论页面搞定,至于友链部分可以统一在友链前面加上http://zhebk.cn/go/?url=但是我发现这样会使友链的favicon图标获取失败,(强迫症的我)我就想加在模板试试。

<pre class="prettyprint lang-php linenums">//widget:链接(已经修改过的侧边栏友链)
function widget_link($title){
    global $CACHE; 
    $link_cache = $CACHE->readCache(\'link\');
    //if (!blog_tool_ishome()) return;#只在首页显示友链去掉双斜杠注释即可
    ?>
<div class="widget widget_links"><span class="icon"><i class="fa fa-link"></i></span> <h3> 友情链接</h3><ul>
    <?php foreach($link_cache as $value): ?>
    <li><a href="<?php echo "/go/?url=".$value[\'url\']; ?>" title="<?php echo $value[\'des\']; ?>" target="_blank"><i class="fa fa-link fa-fw"></i><?php echo $value[\'link\']; ?></a></li>  
    <?php endforeach; ?></ul>
 </div>
 <?php
//widget:pages_links(已经修改过的友链页面)
function pages_links(){
    global $CACHE; 
    $link_cache = $CACHE->readCache(\'link\');
    //if (!blog_tool_ishome()) return;#只在首页显示友链去掉双斜杠注释即可
    foreach($link_cache as $value): ?>
    <li><a href="<?php echo "/go/?url=".$value[\'url\'];?>" title="<?php echo $value[\'des\']; ?>" target="_blank" rel="nofollow"><?php echo $value[\'link\']; ?></a></li>
    <?php endforeach;}?>

然后我发现竟然还是获取不了favicon图标。F12是这样的

<pre class="prettyprint lang-php linenums"><img src="http://api.byi.pw/favicon/?url=l=http:www.baidu.com"></pre>

我心里就我操我操了多了个“l=”是什么意思?使用的这个代码获取favicon图标"来自AE博客"

<pre class="prettyprint lang-js linenums">/* 友情链接 favicon图标*/
$(\'.plinks a\').each(function(){
    var imgSrc = $(this).attr(\'href\').substr(7).replace(\'/\',\'\');
    $(this).prepend( \'<img src="http://api.byi.pw/favicon/?url=\'+imgSrc+\'">\' );
})</pre>

然后我就......你不就是多了吗?我删!

将上面<img src="http://api.byi.pw/favicon/?url=\'+imgSrc+\'">
代码改为<img src="http://api.byi.pw/favicon/?ur\'+imgSrc+\'">

要是以上跳转动画你觉得太烂的话,还有一个。

<?php
    $t_url=$_GET[\'url\'];
    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=\'http://zhebk.cn/\';
                $title=\'参数错误,正在返回首页...\';
            }
        }
    } else {
        $title=\'参数缺失,正在返回首页...\';
        $url=\'http://zhebk.cn/\';
    }
    ?>
<html>
     <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="robots" content="noindex, nofollow" />
        <meta http-equiv="refresh" content="1;url=\'<?php echo $url;?>\';">
        <title>
            <?php echo $title;?>
        </title>
        <style type="text/css">
      html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video
            { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align:
            baseline } body { background: #3498db; } #loader-container { width: 188px;
            height: 188px; color: white; margin: 0 auto; position: absolute; top: 50%;
            left: 50%; margin-right: -50%; transform: translate(-50%, -50%); border:
            5px solid #3498db; border-radius: 50%; -webkit-animation: borderScale 1s
            infinite ease-in-out; animation: borderScale 1s infinite ease-in-out; }
            #loadingText { font-family: \'Raleway\', sans-serif; font-size: 1.4em; position:
            absolute; top: 50%; left: 50%; margin-right: -50%; transform: translate(-50%,
            -50%); } @-webkit-keyframes borderScale { 0% { border: 5px solid white;
            } 50% { border: 25px solid #3498db; } 100% { border: 5px solid white; }
            } @keyframes borderScale { 0% { border: 5px solid white; } 50% { border:
            25px solid #3498db; } 100% { border: 5px solid white; } }
        </style>
    </head>
    <body>
        <div id="loader-container">
            <p id="loadingText">
                页面加载中...
            </p>
        </div>
    </body>
</html>

声明:纸盒博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Emlog全站实现go跳转


Carpe Diem and Do what I like