wordpress 外链跳转 显示403禁止访问

在wordpress中采用外链转内链是加大站点seo权重的一个方法,
利用搜索引擎在网上找到了一组跳转外链的代码:

第一步、新建go文件夹和index.php

在桌面上新建一个go文件夹,然后在里面加一个index.php,在里面粘贴如下代码

<?php
//$t_url=$_GET['url']; //此代码无法支持带请求参数的目的地址,已弃用!
$t_url = preg_replace('/^url=(.*)$/i','$1',$_SERVER["QUERY_STRING"]); //这个支持
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://你的域名/';
        $title='参数错误,正在返回首页...';
    }
}
} else {
    $title='参数缺失,正在返回首页...';
    $url='http://你的域名/';
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="1;url='<?php echo $url;?>';">
<title><?php echo $title;?></title>
<style>
body{background:#000}.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:50%;left:50%;margin-left:-90px;margin-top: 2px;color:#BBB;letter-spacing:1px;font-weight:700;font-size:36px;font-family:Arial}.spinner{position:absolute;top:50%;left:50%;display:block;margin-left:-160px;width:1px;height:1px;border:25px solid rgba(100,100,100,0.2);-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>

脚下留心:这个代码中加了些css效果用于美化,如果你不需要这个装逼特效,可以换成这个代码

<?php
    $url = $_GET['url'];
    Header("Location:$url");
?>

然后把go整个文件夹通过ftp工具传到网站根目录(跟wp-admin,wp-content平行的目录)

第二步、在functions.php进行外链替换

打开主题文件夹下的functions.php,加入以下代码

//给外部链接加上跳转
add_filter('the_content','the_content_nofollow',999);
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\" target='_blank'",$content);
            }
        }
    }
    return $content;
}

第三步、禁止百度蜘蛛抓取收录

打开百度站长平台,进入左边的Robots,在里面加入这句

Disallow: /go/


出现403报错

按道理已经可以跳转了,但在我的wordpress博客下是没有办法使用的
具体表现为点击外链-直接报错
测试后发现只要是
url传入数据出现了冒号“:” 则 立刻出现下方的报错
wordpress 外链跳转 重定向 显示403禁止访问
怀疑是apache的安全保护机制致使,但在根目录查看httpd.conf
未发现任何端倪

但在wordpress根目录下打开.htaccess文件
发现了有这么些过滤输入项
wordpress 外链跳转 重定向 显示403禁止访问
应该是这一段代码导致的禁止跳转的问题,看到注释很眼熟
思考到wordpress后台安装了 WP安全 这个插件,里面的确有类似的设置,来到后台发现确有其事

在wp安全的防火墙设置中有这么两个设置wordpress 外链跳转 重定向 显示403禁止访问
wordpress 外链跳转 重定向 显示403禁止访问
这是防止xss注入攻击的文本过滤工具,就是这个导致了我们的403禁止访问,于是解决方法很简单了

关闭 “拒绝坏查询字符串” 即可

关闭后正常跳转了,问题解决

相关文章:

  • 2021-12-21
  • 2022-12-23
  • 2022-12-23
  • 2022-03-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-29
猜你喜欢
  • 2021-12-15
  • 2022-12-23
  • 2021-11-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案