网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名。

百度站长平台提供的死链提交工具,可将网站存在的死链(协议死链、404页面)进行提交,可快速删除死链,帮助网站SEO优化。在提交死链的文件中逐个手动填写死链的话太麻烦,工作中我们提倡复杂自动化,所以本文我们一起交流分享Apache服务中通过shell脚本整理网站死链,便于我们提交。

1.配置Apache记录搜索引擎

Apache是目前网站建设最为主流的web服务,但是apache的日志文件默认是不记录百度、谷歌等各大搜索引擎的爬取程序的,所以首先需要我们设置Apache的配置文件。

找到Apache的配置文件httpd.conf,在配置文件中找到下面两行:

  1. CustomLog "logs/access_log" common
  2. #CustomLog "logs/access_log" combined

默认采用的是common,这里我们只需要将common这一行前面加#注释掉,然后将combined这一行前的#去掉即可。然后保存重启Apache服务。

注:如果你的服务器上添加了多个站点,每个站点有单独的配置文件,则我们只需要在相应站点的配置文件中设置CustomLog项即可,例如:

  1. vim /usr/local/apache/conf/vhost/www.chanzhi.org.conf
  2.  
  3. ServerAdmin [email protected] DocumentRoot "/data/wwwroot/www.chanzhi.org"
  4. ServerName www.chanzhi.org
  5. ServerAlias chanzhi.org
  6. ErrorLog "/data/wwwlogs/www.chanzhi.org_error_apache.log"
  7. CustomLog "/data/wwwlogs/www.chanzhi.org_apache.log" combined
  8.  
  9. SetOutputFilter DEFLATE
  10. Options FollowSymLinks ExecCGI
  11. Require all granted
  12. AllowOverride All
  13. Order allow,deny
  14. Allow from all
  15. DirectoryIndex index.html index.php

下面是配置前后的网站日志记录格式:

配置前:

配置后:

2.编写shell脚本

我们通过shell脚本获取网站日志中指定爬虫的抓取记录,然后汇总到一个文件中,便于后期使用。代码如下,比如保存为deathlink.sh

  1. #!/bin/bash
  2. #初始化变量
  3. #定义蜘蛛UA信息(默认是百度蜘蛛)
  4. UA='+http://www.baidu.com/search/spider.html'
  5.  
  6. #前一天的日期(apache日志)
  7. DATE=`date +%Y%m%d -d "1 day ago"`
  8.  
  9. #定义日志路径
  10. logfile=/data/wwwlogs/www.chanzhi.org_apache.log-${DATE}.log
  11.  
  12. #定义死链文件存放路径
  13. deathfile=/data/wwwroot/www.chanzhi.org/deathlink.txt
  14.  
  15. #定义网站访问地址
  16. website=http://www.chanzhi.org
  17.  
  18. #分析日志并保存死链数据
  19. for url in `awk -v str="${UA}" '$9=="404" && $15~str {print $7}' ${logfile}`
  20. do
  21. grep -q "$url" ${deathfile} || echo ${website}${url} >>${deathfile}
  22. done
  23.  

大家在使用该脚本时,根据自己服务器情况调整下路径和字段即可,然后执行脚本,:

  1. bash deathlink.sh
  2.  
3.提交死链

执行上面脚本时候,就会在指定目录下生成包含所有获取的404页面链接的文件,每个连接占一行。例如:

最后在站长平台提交死链页面中,填写自己的死链文件地址即可,例如:

百度在审核通过之后,会将已经收录的失效链接删除,以避免失效页面链接对网站造成不良的影响。

利用shell脚本批量提交网站404死链给百度的更多相关文章

  1. Apache下通过shell脚本提交网站404死链

    网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名. 百度站长平台提供的死链提交工具,可将网站存在的死链( ...

  2. 利用shell脚本或者php移动某个文件夹下的文件到各自的日期组成的目录下

    背景是这样的:网站一开始访问量比较小,大家就把所有的图片文件上传到一个目录下(比如是/data/images/).后来访问量大了,图片也多了,这样就影响读取效率.所以有个这样的需求,把这些个图片文件移 ...

  3. shell脚本批量部署ssh

    日常运维工作中,需要给几十上百台服务器批量部署软件或者是重启服务器等操作, 这样大量重复性的工作一定很苦恼,本文给大家提供了最基本的批量操作的方法,虽然效率不高,对于初学者来说还是好理解.由于刚开始学 ...

  4. shell脚本批量ssh登陆主机并执行命令

    shell脚本批量ssh登陆主机并执行命令 今天在客户现场遇到了这个问题,客户没有管理工具,无法批量登陆主机下发命令,几个个C段啊,让我一个一个登陆,.................. 所以写了个s ...

  5. Linux shell脚本 批量创建多个用户

    Linux shell脚本 批量创建多个用户 #!/bin/bash groupadd charlesgroup for username in charles1 charles2 charles3 ...

  6. Shell 脚本批量创建数据库表

    使用 Shell 脚本批量创建数据表 系统:Centos6.5 64位 MySQL版本:5.1.73 比如下面这个脚本: #!/bin/bash #批量新建数据表 for y in {0..199}; ...

  7. 利用shell脚本去备份幸运28源码搭建下载所指定的数据库

    #! /bin/bash幸运28源码搭建下载Q[115288oo99]logintool=/home/yx/server/mysql/mysql/bin/mysqldumptool=/home/yx/ ...

  8. 利用shell脚本实现计划任务功能 V1.2

    2013.05.10  mytask 1.2 主程序休眠时间分成若干小的时间片断分段休眠,避免长时间的休眠不能及时响应系统信号. 2013.05.07 mytask 1.1 昨天发布了mytask1. ...

  9. 利用shell脚本个性化运行jar任务

    利用shell脚本可以个性化运行jar任务,废话不多说,直接上代码: #!/bin/bash APP_PATH=/root/bigdata/jars/data_migration_from_sqlse ...

随机推荐

  1. Eclipse添加Spket插件实现ExtJs智能提示

    1 . 开发环境 MyEclipse 12.0.0 ExtJs 4.2.1.883 Spket 1.6.23 2 . 下载资源 extjs 4.2.1.883 - http://www.sencha. ...

  2. 区别ES3ES5和ES6this的指向问题。区分普通函数和箭头函数中this的指向问题

    ES3 ES5this的指向问题 this指的是该函数被调用的对象 var foo = function () { this.a = 'a', this.b = 'b', this.c = { a: ...

  3. LightOJ 1118 - Incredible Molecules (两圆面积交)

    1118 - Incredible Molecules   PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Limit: ...

  4. 推荐13个.Net开源的网络爬虫

    1:.Net开源的跨平台爬虫框架 DotnetSpider Star:430 DotnetSpider这是国人开源的一个跨平台.高性能.轻量级的爬虫软件,采用 C# 开发.目前是.Net开源爬虫最为优 ...

  5. x86 TargetPlatform with XBAPs

    I've got a XAML Browser Hosted Application (XBAP) project that has a dependency on another project t ...

  6. redis实现发布(订阅)消息

    redis实现发布(订阅)消息 什么是redis的发布订阅(pub/sub)?   Pub/Sub功能(means Publish, Subscribe)即发布及订阅功能.基于事件的系统中,Pub/S ...

  7. Odoo8出现Internal Server Error的解决办法之一

    转载地址:http://blog.sina.com.cn/s/blog_7cb52fa80102vaf3.html     问题: 不知怎么回事,我的Odoo8出错了,重装也一样出错信息如下 Inte ...

  8. 美国恐怖故事第七季/全集American Horror Story全迅雷下载

    FX电视台已经续订了<美国恐怖故事>第七季,将于2017年开播,第七季终于确定副标题为<邪教 Cult>.剧集的创造者瑞恩·墨菲与布拉德·法尔查克将再度联手.顺便一说,< ...

  9. 实用ExtJS教程100例-008:使用iframe填充ExtJS Window组件

    上面两节中我们分别演示了ExtJS Window的常用功能 和 如何最小化ExtJS Window组件,在这篇内容中我们来演示一下如何使用iframe填充window组件. 思路很简单,首先创建一个w ...

  10. How to fix Error: listen EADDRINUSE while using nodejs

    If I run a server with the port 80, and I try to use xmlHTTPrequest i get this error: Error: listen ...