注重SEO的站长都了解,过多的外链会影响网站权重,而且影响极大。那么有没有一种不输出权重的站内跳转方式呢?很多站长通过go.php的方式跳转,这个方法是不错的,但是必须要用对、用精,而且URL美观性也是另一个问题,下面给各位站长从头到尾讲解一下。
一、SEO禁止抓取优化
首先来分析,由于百度也会抓取php页面,通过go.php直接跳转,并不能保证效果。所以需要在跳转页面加上一句:
同时,在robots.txt也加上一句:
Disallow: /go.php
这样,百度就不会抓取这个专门用来跳转的页面了。
二、跳转时间优化
跳转的时间既不能太长也不能太短,一秒钟刚刚好。同时也要设置10秒钟后自动关闭跳转页面,比如下载文件时,文件下载完成时,这个页面并不会自动关闭,这里通过JS实现,代码如下:
function jump()
{
location.href="<?php echo $url;?>";
}
//from www.kxxzz.com
setTimeout(jump, 10000);
setTimeout(function(){window.opener=null;window.close();}, 10000);
三、URL美观性优化
kxxzz.com/go.php?url=baidu.com,这么长的参数,简直逼死强迫症。那么,我们可以使用nginx的伪静态来美化一下,这样就挺不错:kxxzz.com/go/baidu.com,通过下方的nginx伪静态规则来实现(注意如果go.php不在根目录,需将目录换成自己):
rewrite ^/go/(.*)$ /go.php?url=$1 last;
如此,甚好!但是聪明的我们也要想到,在robots.txt文件中再加一句:
Disallow: /go/
四、防止别人盗用我们的go.php
...自己发挥吧
五、最终完整的go.php代码
$url = preg_replace('/^url=(.*)$/i','$1',$_SERVER["QUERY_STRING"]);
if(!empty($url)) {
preg_match('/(http|https):\/\//',$url,$matches);
//from www.kxxzz.com
if($matches){
$url=$url;
$title='页面加载中,请稍候...';
} else {
preg_match('/\./i',$url,$matche);
if($matche){
$url='http://'.$url;
$title='页面加载中,请稍候...';
} else {
$url='http://www.kxxzz.com/';
$title='参数错误,正在返回首页...';
}
}
} else {
$title='参数缺失,正在返回首页...';
$url='http://www.kxxzz.com/';
}
?>
';">function jump()
{
location.href="<?php echo $url;?>";
}
//from www.kxxzz.com
setTimeout(jump, 1000);
setTimeout(function(){window.opener=null;window.close();}, 10000);
<?php echo $title;?>页面加载中,请稍候...
如此一来,我们拥有了还算完美的SEO不输出权重的站内跳转方法。