PHP统计nginx访问日志中的搜索引擎抓取404链接页面
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访问记录,并将其保存为单独的文本文件。这样,你就可以轻松地对每个搜索引擎的访问情况进行单独统计了。代码简单易懂,只需稍作调整,就可以适应你的实际需求。希望对你有所帮助!
编程语言
- PHP统计nginx访问日志中的搜索引擎抓取404链接页面
- Javascript获取某个月的天数
- js代码实现微博导航栏
- jquery实现的省市区三级联动
- php读取和保存base64编码的图片内容
- sql server2008调试存储过程的完整步骤
- vue2.0中click点击当前li实现动态切换class
- Ajax获取到数据放入echarts里不显示的原因分析及解
- JS 拼凑字符串的简单实例
- ng-zorro-antd 入门初体验
- PHP实现截取中文字符串不出现-号的解决方法
- js+canvas绘制五角星的方法
- vue+element模态框中新增模态框和删除功能
- vue将对象新增的属性添加到检测序列的方法
- 使用正则表达式判断密码强弱
- JavaScript设置表单上传时文件个数的方法