何喜阳博客

织梦后台一键更新网站后文档HTML没生成访问404的解决办法

最近一个朋友过来问我织梦系统网页 404 的问题,具体情况是:在后台一键更新网站、更新文档 HTML,显示已经全部生成了,但很多文章打开还是 404,向我寻求解决办法。经过我的测试,出现的原因是织梦的 SQL 语句写的有些问题,解决步骤如下:

打开织梦后台目录下的 makehtml_archives_action.php,搜索 如果生成数量大于500,并且没选栏目,按栏目排序生成 找到 :

//如果生成数量大于500,并且没选栏目,按栏目排序生成
if($totalnum > 500 && empty($typeid))
{
    $dsql->Execute('out',"SELECT id FROM `dede_arctiny` $idsql ORDER BY typeid ASC $limitSql");
} else {
    $dsql->Execute('out',"SELECT id FROM `dede_arctiny` $idsql $limitSql");
}



 



这段代码的起始位置大概在 86 行。这里生成总数量超过 500 时,织梦使用了ORDER BY排序,上网查一下关于 mysql 使用 order by 语句有数据但是查不到的内容还是蛮多的,我们继续解决。

既然知道问题是出在 order by,其实就比较好解决了,有两种解决办法,我个人比较推荐第二种。

第一种办法:直接把生成数量超过 500 的也换成不带排序的 SQL,具体代码如下,整块代码替换即可。

//如果生成数量大于500,并且没选栏目,按栏目排序生成
if($totalnum > 500 && empty($typeid))
{
  $dsql->Execute('out',"SELECT id FROM `dede_arctiny` $idsql $limitSql");
} else {
    $dsql->Execute('out',"SELECT id FROM `dede_arctiny` $idsql $limitSql");
}



 



第二种办法:给 order by 再增加一个约束条件,这也是我目前采用的办法。具体代码如下,整块代码替换即可。

//如果生成数量大于500,并且没选栏目,按栏目排序生成
if($totalnum > 500 && empty($typeid))
{
  $dsql->Execute('out',"SELECT id FROM `dede_arctiny` $idsql ORDER BY typeid ASC,id ASC $limitSql");
} else {
    $dsql->Execute('out',"SELECT id FROM `dede_arctiny` $idsql $limitSql");
}



 



把代码修改保存。此时再去织梦后台生成文档 HTML 看看,是不是完美解决啦?

以上就是全部内容了。如果你觉得内容有帮助,可以扫码打赏,请我吃一顿饭。

微信支付宝

当前页面地址:https://hexiyang.cn/article/1618560614.html

内容基于 《自由转载-非商用-非衍生-保持署名》 协议发布,允许非商用转载,需要保留作者姓名和当前页面链接。