Loading
0

WordPress无插件外链转内链新窗口打开代码教程

公众号搜索菜鸟站长之家

WordPress外链转内链对一个网站的seo很有帮助,说的最多的就是过多的外链会降低你的网站权重,如果你非常在意的话,可以通过插件国人开发的插件anylink,来实现,我其实一直也不在意这个事情,当我们发现权重流失时,可以试试下面的方法,免去插件的麻烦。当然代码对于首页的友情链接,文章页内自己的文章的链接是不会起作用的。下载就讲下css内连转外链样式的方法。

1、原窗口打开在functions.php添加以下代码

/*
*自动给文章的外部链接添加nofollow属性
*/ 
add_filter('the_content','web589_the_content_nofollow',999);
function web589_the_content_nofollow($content){
preg_match_all('/href="(http.*?)"/',$content,$matches);
if($matches){
foreach($matches[1] as $val){
if( strpos($val,home_url())===false )
$content=str_replace("href=\"$val\"", "rel=\"nofollow\" href=\"" . get_bloginfo('wpurl'). "/go?url=" .base64_encode($val). "\"",$content);
}
}
return $content;
}
// 自动给文章的外部链接添加nofollow属性

2、新窗口打开并添加nofollow属性,在functions.php添加以下代码

/*WordPress外链自动新窗口打开并添加nofollow属性*/
add_filter( 'the_content', 'cn_nf_url_parse');
function cn_nf_url_parse( $content ) {
    $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>";
    if(preg_match_all("/$regexp/siU", $content, $matches, PREG_SET_ORDER)) {
        if( !empty($matches) ) {
            $srcUrl = get_option('siteurl');
            for ($i=0; $i < count($matches); $i++)
            {
                $tag = $matches[$i][0];
                $tag2 = $matches[$i][0];
                $url = $matches[$i][0];
                $noFollow = '';
                $pattern = '/target\s*=\s*"\s*_blank\s*"/';
                preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE);
                if( count($match) < 1 )
                    $noFollow .= ' target="_blank" ';
                $pattern = '/rel\s*=\s*"\s*[n|d]ofollow\s*"/';
                preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE);
                if( count($match) < 1 ) $noFollow .= ' rel="nofollow" '; $pos = strpos($url,$srcUrl); if ($pos === false) { $tag = rtrim ($tag,'>');
                    $tag .= $noFollow.'>';
                    $content = str_replace($tag2,$tag,$content);
                }
            }
        }
    }
    $content = str_replace(']]>', ']]>', $content);
    return $content;
}

3、在网站根目录下建立go文件夹
注意是网站的根目录,不是主题的根目录。建立index.php文件,复制以下代码

<?php
/*自动跳转页面
**@copyright (c) Emlog All Rights Reserved */
//自定义跳转地址
$cars = array(
   array("qcloud",'https://curl.qcloud.com/ogHI5jPB'),
   array("aliyun",'https://www.aliyun.com/minisite/goods?userCode=y7af6jip'),
   );

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>

<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
}
.alert-box {
    display: none;
    position: relative;
    margin: 200px auto 0;
    padding: 180px 85px 22px;
    border-radius: 10px 10px 0 0;
    background: #FFF;
    box-shadow: 5px 9px 17px rgba(102,102,102,0.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)"></circle>
        <text class="alert-sec-unit" x="98" 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.rel="external nofollow" target="_blank" href="https://www.cnzzzj.com/wp-content/themes/wpdx/customfun/other/go.php?url=aHR0cDovLw==" + 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>

文章部分代码来自AE博客

https://www.cnzzzj.com换成你的网址。以上技术来自网络,已经测试没有问题--).

以上代码增加了跳转美化效果,代码中已经用 base64 将源链接加密,并且加上了 nofollow,但恐怕蜘蛛还是能爬行,在 Robot s 禁止所有蜘蛛爬行 /go?url 目录!

Disallow: /go/
Disallow: /go?url

 

文章声明:
1、本站文章来源于互联网,仅供学习交流使用,严禁用于商业用途,因此造成的一切法律后果自行承担。
2、本站不对文章内容的完整性和安全性负责,请自行辨别,如发现有问题,请及时联系我们进行处理。
3、若文章中有侵权或不适当内容,请留言告知我们,本站会第一时间进行处理。