在阅读了一篇关于WordPress网站外链转内链的优化代码的博客后,自己也去折腾了下riprov2演示地址的外链Base64 加密转内链跳转 ,因此今天特意跟大家分享下。

1、将以下跳转代码保存为 index.php,然后在网站根目录新建一个 go 文件夹,并把 index.php 上传到 go 文件夹中:

<?php
    if(strlen($_SERVER['REQUEST_URI']) > 255 ||
        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=="febdays" ) {
       $t_url="https://www.zhann.cn";
    } elseif($t_url=="news") {
       $t_url="https://www.zhann.cn/news";
    }
    //数据处理
    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=''.$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>

其中第12行代码中自定义的一些特别外链,这个功能特别好,因为我们每个站点都或多或少有一些特殊的外链,如果也变成 Base64 加密地址就不好看了,所以此处我们可以多添加几个比较有个性化的外链跳转地址。

2、将以下代码添加到我们的 Nginx 服务器相应配置文件中的 location / { 前面,保存配置文件后平滑重启 Nginx 即可:


rewrite ^/goto/(.*)$ /go/?url=$1 last;

Apache服务器修改根目录.htaccess文件,添加以下代码

RewriteRule ^goto/(.*)$ /go.php?url=$1 [L]

3、替换文章原外链跳转地址格式变更为新的外链格式(/goto/ base64 加密串),我自己的目录为/wp-content/themes/ripro-v2/single/single-cat-store.php 114行,请根据自己的需求来。

<?php
global $post, $current_user;
        $user_id     = $current_user->ID; //用户ID
        $post_id     = $post->ID; //文章ID
        $click_nonce = wp_create_nonce('rizhuti_click_' . $post_id);

$cao_info1 = get_post_meta($post_id, 'cao_info', true);
        if ($cao_demourl = get_post_meta($post_id, 'cao_demourl', true)) {
            $cao_info1[] = array('title' => esc_html__('downurl', 'ripro-v2'), 'desc' => $cao_demourl);
        }

        if ($cao_info1) {
            foreach ($cao_info1 as $key => $value) {
                if($value['title']=='downurl'){
                 echo '<a href="/goto/'.base64_encode($value['desc']).'" class="fast m_b2" target="_blank" rel="nofollow"><i class="fa fa-desktop"></i>演示地址<span>若无法打开演示,请联系我们!</span></a><a href="https://wpa.qq.com/msgrd?v=3&uin=4084380&site=qq&menu=yes" class="normal" target="_blank" rel="nofollow"><i class="fa fa-qq"></i>技术支持<span>遇到问题?请联系客服反馈!</span></a>';   
                }
                
            }
        }
?>

至此,演示地址外链均变成新的跳转格式了。


 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。