知梦采集问题

2019年11月10日04:54:14 评论 47 次浏览

采集时提示读取网址失败

DEDECMS 设置采集规则时,保存测试时,提示读取测试网址失败,不能下载远程图片和资源,不能提取缩略图,是因为服务器上禁用了fsockopen() 与pfsockopen() 函数造成的,在用fsockopen()或fsockopen() 的地方用 stream_socket_client()代替就可以了。

具体修改地方是: /include/dedehttpdown.class.php 第507行

$this->m_fp = @fsockopen($this->m_host, $this->m_port, $errno, $errstr,10);

替换为

$this->m_fp = @stream_socket_client($this->m_host . ':' . $this->m_port, $errno, $errstr,10);

确定服务器是否禁用了fsockopen() 与pfsockopen() 函数,可以使用PHP探针查看服务器的信息,信息中会明确显示是否禁用了这两个函数的。

采集文章时相对路径问题

问题描述:
当采集目标文章中列表或者分页信息是绝对路径时,DEDE可以正确采集,例如:(jiaook.com/2012/331.html这样文章可以正确采集。
当采集目标文章中列表或者分页信息是相对路径,但是以 ‘/’开头(如 /2012/0328/1943.html)DEDE也可以正确采集。
当采集目标文章中列表或者分页信息是相对路径,但不是以 ‘/’开头(如 2012/0328/1943.html)DEDE就不能正确采集了。
这在我们平时做站的时候,涉及到SEO的一个问题,就是URL标准化,详细可以看看另一篇博文:SEO:什么是URL的标准化?
解决方案:
问题的根源出在 dedehtml2.class.php 中的 FillUrl 函数上,大概在394行左右:

if( strlen($surl) < 7 )
 {
     $okurl = $this->BaseUrlPath.'/'.$surl;
 }
 else if( strtolower(substr($surl,0,7))=='http://' )
 {
     $okurl = preg_replace('/^http:///i', '', $surl);
 }
 else
 {
     //$okurl = $this->BaseUrlPath.'/'.$surl;  
     $okurl = $this->HomeUrl.'/'.$surl; //替换为这一句
 }
继续阅读
weinxin
加我微信
微信扫一扫,加我微信好友,共同交流,共同进步! (备注:焦国强博客)
dedecms 最后更新:2019-11-29
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: