PHP统计nginx访问日志中的搜索引擎抓取404链接页面

网络编程 2025-03-24 18:27www.168986.cn编程入门

PHP魔法:统计nginx访问日志中的搜索引擎404链接页面路径

在服务器管理的日常工作中,nginx访问日志为我们提供了丰富的信息。你是否曾想过,如何轻松统计各大搜索引擎抓取的404页面路径呢?今天,我将与你分享一种方法,通过PHP脚本实现对nginx日志中搜索引擎404链接的统计工作。

我习惯每天对nginx日志进行切割,这样可以轻松追踪到每天各大搜索引擎的访问情况,包括它们尝试访问的404页面。对于大量的日志信息,人工筛选显然不是明智之举。于是,我决定通过PHP脚本自动完成这一任务。

当你访问`test.php?s=google`时,下面的PHP代码会开始工作:

```php

// 定义域名和搜索引擎爬虫的名称映射

$domain = '

$spiders = array(

'baidu' => 'Baiduspider',

'360' => '360Spider',

'google' => 'Googlebot',

'soso' => 'Sosospider',

'sogou' => 'Sogou web spider',

'easou' => 'EasouSpider',

'bing' => 'bingbot'

);

// 定义nginx日志路径

$path = '/home/nginx/logs/' . date('Y/m/') . (date('d') - 1) . '/aess_.txt';

// 获取通过GET方法传入的搜索引擎名称

$s = $_GET['s'];

// 检查搜索引擎名称是否存在于定义的数组中

if (!array_key_exists($s, $spiders)) {

die(); // 如果不存在,终止脚本执行

}

$spider = $spiders[$s];

// 定义输出文件名

$file = $s . '_' . date('ym') . (date('d') - 1) . '.txt';

// 如果输出文件不存在,则从日志文件中提取相关信息并保存

if (!file_exists($file)) {

$in = file_get_contents($path);

$pattern = '/GET (.) HTTP\/1.1" 404.' . $spider . '/';

preg_match_all($pattern, $in, $matches);

$out = '';

foreach ($matches[1] as $k => $v) {

$out .= $domain . $v . "\r";

}

file_put_contents($file, $out);

}

// 构建输出URL并输出

$url = $domain . '/silian/' . $file;

echo $url;

?>

```

这段代码的核心功能是从nginx日志文件中提取特定搜索引擎的404访问记录,并将其保存为单独的文本文件。这样,你就可以轻松地对每个搜索引擎的访问情况进行单独统计了。代码简单易懂,只需稍作调整,就可以适应你的实际需求。希望对你有所帮助!

上一篇:Javascript获取某个月的天数 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by