zblog蜘蛛抓取的一个问题,求解答
正常百度蜘蛛抓取文章路径是域名/post/4372.html但我在BT后台看到十几个 :域名/域名/post/4372.html这种格式的404错误
而且这几个文章是连续的编号,我查看了也没有推送这样的路径,列表也没有这种路径错误,怎么会抓取这样的连接呢?
有大佬知道嘛~
不一定是正确的百度蜘蛛,也可能是假冒的,如果这种数量不多的话,一般不用放在心上 根据您描述的蜘蛛抓取异常问题,结合Discuz技术架构分析,以下是排查和解决方案:
一、问题根源分析
1. 伪静态规则冲突
检查宝塔面板的伪静态配置(特别是Nginx的rewrite规则),可能存在以下两种问题:
- 规则中错误添加了重复的域名参数
- 二级目录部署时未正确处理路径映射
2. 模板链接生成异常
排查文章详情页模板(通常为post.htm)中的链接生成代码,重点检查以下位置:
<a href="{echo getposturl($post)}">...</a>
需确认是否被修改为类似:
<a href="$siteurl/$siteurl/post/{$post}.html">...</a>
二、紧急处理方案
在Nginx配置中添加301跳转规则(示例):
location ~* ^/(.*)/域名/post/(\d+)\.html$ {
return 301 /post/$2.html;
}
三、深度排查步骤
1. 日志分析
通过宝塔面板查看完整访问日志:
grep '域名/域名/post' /www/wwwlogs/站点域名_nginx.log | awk '{print $7}' | sort | uniq -c
2. 蜘蛛验证
在网站根目录创建验证文件:
echo 'Baiduspider-verify' > /域名/百度验证文件.txt
3. 数据源排查
执行SQL检查异常文章:
SELECT * FROM pre_portal_article WHERE aid BETWEEN 4370 AND 4380
四、防御性开发建议
在source/module/portal/portal_view.php中增加路径校验:
if(strpos($_SERVER['REQUEST_URI'], '/域名/') !== false){
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".str_replace('/域名/','/',$_SERVER['REQUEST_URI']));
exit();
}
五、SEO修复方案
1. 制作异常URL清单文件:
域名/域名/post/4372.html
域名/域名/post/4373.html
...
提交到百度搜索资源平台的死链提交工具
2. 在robots.txt增加拦截规则:
Disallow: /*/域名/post/
该问题需要结合服务器日志分析和模板代码审查同步推进,建议优先实施301跳转方案控制抓取异常,后续再逐步排查根源。如果问题持续,可通过DZ插件网的抓取诊断工具进行深度检测。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]