| 
 
上一篇:nginx日志报failed 13: Permission denied错误,原来是帐户权限问题下一篇:小米:需要输入当前锁屏密码解密手机,解锁报1004未知错误| 近日,发现网站死链比较多,尤其是一些合作过的推广项目,造成了大量的死链。当然,死链对于搜索引擎来说是非常不友好的,将死链提交给搜索引擎是一个比较好的解决途径。 但是,问题来了,网站页面收录了几十万,我根本不知道哪些链接是死链啊,也没办法一条一条去核实统计,怎么办呢?网上找的死链检测工具也不好使。直到看到了下面这个思路:
 遇到死链,服务器不就会返回404 not found嘛,完全可以在404页面进行操作,把相关的死链保存下来,然后隔一段时间提交给搜索引擎即可。还可以通过user agent的参数进行数据筛选!
 好了,思路有了,接下来就是具体操作。以前的404页面都是用的纯html,现在既然涉及统计操作,当然要改成php动态页了。先在nginx服务器conf文件配置一下:
 
 这样配置之后,404.php就可以正常运行了。然后,在页面头部插入以下php代码:复制代码        error_page  404 /404.php;
        location = /404.php {
        root  /website/www;   #这是404.php的所在目录
        try_files      $uri =404;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;        
    }
 把代码上传到服务器之后,访问死链文件,就可以看到网站的死链了。记得要把死链文件的读写权限设置为777哦。成果如图所示:复制代码<?php
if(stripos($_SERVER['HTTP_USER_AGENT'],'spider') !== false){        
        $scheme = $_SERVER['REQUEST_SCHEME']; //协议
        $domain = $_SERVER['HTTP_HOST']; //域名/主机
        $requestUri = $_SERVER['REQUEST_URI']; //请求参数
        $currentUrl = $scheme . "://" . $domain . $requestUri;
        $file = @file("deadlinks.txt");//deadlinks.txt
        $check = true;
        $ext = strtolower(pathinfo($currentUrl,PATHINFO_EXTENSION));
        $tmp = array('php','htm','html');
        if (!in_array($ext,$tmp))
        {
                exit;
        }
        if (strlen($currentUrl) > 150)
        {
                exit;
        }
    if(is_array($file) && !empty($file))
        {
                foreach($file as $f){
                        if(trim($f) == trim($currentUrl))
                        {
                                $check = false;
                                break;
                        }
                }
        }
    if($check){
        $fp =   fopen("deadlinks.txt","a");//deadlinks.txt 就是在网站根目录的记录死链的文件
        flock   ($fp, LOCK_EX) ;
                fwrite  ($fp, $currentUrl."\r\n");
        flock   ($fp, LOCK_UN);
        fclose  ($fp);
    }
}
?>
//这里插入显示404的html代码
好了,就分享到这里,祝大家成功!
 | 
 |