pbootcms站点url尾巴输入不存在的静态文件都显示首页,求解决方案
问题描述:
大佬救救命呀,pbootcms3.13版本BUG,导致了一个致命问题,仿站中页面引用的.js, .css, .png, .tff等后缀的文件类型如果是404状态会直接显示为首页。例如:
[quote]
https://www.erpjdy.cn/404.png
https://www.erpjdy.cn/404.js
https://www.erpjdy.cn/中文.html
以上两个页面网站服务器是不存在的,按道理应该是404。
[/quote]
这样的话我们在仿站过程中,无意间引用的本不存在js、css、png、asp、do等等文件,就都会以首页的方式展现(注意并没有301或任何跳转到“/”,链接不变实际页面是首页)这样就很尴尬啦!
重点是爬虫会爬取,浪费爬虫还造成重复页面,分散权重,甚至有可能被百度识别为作弊网站。
求解决方案。
评论 5
-
・深圳
打开apps\home\controller\IndexController.php,找到$this->getIndexPage();在其上方增加两个判断:
[pre]
// 判断url中文件是否存在
if(!file_exists($path) && $path!=null){
_404('您访问的文件不存在,请核对后重试!');
}
// 判断url是否含有中文
if (preg_match('/[^\x00-\x80]/', $path)) {
_404('您访问的内容不存在,请核对后重试!');
}
[/pre]
img[/storage/2/article_pic/20220627/15c0922d4f852dc15a939be8d9521fd6.png]
PB模板网(PBHTML.COM)专注pbootcms模板制作及整合,提供企业网站模板下载,做中小站长企业快速建站好帮手。
-
・深圳
@站小二 补充个现在常有的被黑路径/?/xxx
把原来判断url是否含有中文的做下修改,改成以下
[pre]
// 判断url是否含有中文或/?/
if (preg_match('/[^\x00-\x80]/', $path) || stripos($_SERVER['REQUEST_URI'], '/?/') !== false) {
_404('您访问的内容不存在,请核对后重试!');
}
[/pre]
PB模板网(PBHTML.COM)专注pbootcms模板制作及整合,提供企业网站模板下载,做中小站长企业快速建站好帮手。
-
・广州市
@站小二 不是我说,这个根本就没有理由屏蔽。
如:https://www.erpjdy.cn/?a=12dasdsamldmcacas.html
https://www.erpjdy.cn/?sasda=sadmsaldmsaca
https://www.erpjdy.cn/?a=smad&b=dsadmasl
这类链接其实都是符合当前页面的链接,被一些人认为是别的不存在的链接。
?后面接的都是参数,何来的不存在的页面?
还有人执意要去除。可能在他们SEO认为这就是不同的页面吧,感觉这些人都被魔怔了。
PB嘴强王者,所有功能没有我不能二开的,如果有,那就是pb不行。
-
・郑州市
@站小二 这个问题好像win服务器上确实还存在,linux服务器上就没有,以前官网服务器也是这样。
-
・Wulipu
@程序员小刘 不是SEO魔怔 是百度哪个智障会认为有问题。