WordPress将网站内的外链转为内链并用base64加密



这种方法是采用https://jianzhanmi.com/goto/base64加密码的形式跳转。

分为两步:

一、先用正则以及wp的钩子修改外链形式为 /goto/base64
二、然后解密jianzhanmi部分,用template_redirect钩子和wp_redirect函数进行302跳转。

function convert_to_internal_links($content){
    preg_match_all('/\shref=(\'|\")(http[^\'\"#]*?)(\'|\")([\s]?)/',$content,$matches);
    if($matches){
        foreach($matches[2] as $val){
            if(strpos($val,home_url())===false){
                $rep = $matches[1][0].$val.$matches[3][0];
                $new = '"'.home_url().'/goto/'.base64_encode($val).'" target="_blank"';
                $content = str_replace("$rep","$new",$content);
            }
        }
    }
    return $content;
}
add_filter('the_content','convert_to_internal_links',99); // 文章正文外链转换
add_filter('comment_text','convert_to_internal_links',99); // 评论内容的链接转换
add_filter('get_comment_author_link','convert_to_internal_links',99); // 访客的链接转换

function jzm_redirect() {
    $baseurl = 'goto';
    $request = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    $hop_base = trailingslashit(trailingslashit(home_url()).$baseurl); // 删除末尾的 斜杠/ 符号
    if (substr($request,0,strlen($hop_base)) != $hop_base)    return false;
    $hop_key = str_ireplace($hop_base, '', $request);
    if(substr($hop_key, -1) == '/')$hop_key = substr($hop_key, 0, -1);
    if (!empty($hop_key)) {
        $url = base64_decode($hop_key);
        wp_redirect( $url, 302 );
        exit;
    }
}
add_action('template_redirect','jzm_redirect');

<< WordPress将网站内评论者链接的外链转为内链并用base64加密 GET方式跳转 WordPress为外链添加Go跳转页面,仿QQ邮箱外链跳转 >>
工作中
  • 作者 建站迷

    建站迷

    让天下没有难做的网站!
    解决中小型企业的无站之伤。



没有账号? 忘记密码?

社交账号快速登录