QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

微信扫一扫 分享朋友圈

已有 4154 人浏览分享

开启左侧

用Nginx和PHP提取搜索引擎访问到的网站死链,方法超简单!

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

上一篇:nginx日志报failed 13: Permission denied错误,原来是帐户权限问题
下一篇:小米:需要输入当前锁屏密码解密手机,解锁报1004未知错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

36

关注

177

粉丝

13651

主题
热门资讯
网友晒图
  • 公众号

    微信公众号

  • 微信

    站长微信

Powered by Discuz! 在此致以诚挚谢意!

CopyRight © 2011-2024 wancili.com