分页链接跳回第一页,参数丢失
报错现象 页点击“下一页”,URL变成/article/123.html?page=2,但页面怎么刷都显示第一页内容,后台生成静态页时,分页文件名如article_2.html也生成成功,但访问直接跳首页。
原因分析
这大概率是模板里调用分页标签时缺了参数,或者URL重写规则没适配,织梦的分页跳转依赖{dede:pagebreak/}标签,而许多模板为了好看,把分页改成了自定义的<a href=”?page=2″>,这种写法在开启伪静态时直接失效,服务器如果配置了强制301跳转,会把带参数URL重定向到无参数版本。
织梦CMS内容页翻页链接崩了?老手手把手排查这6个高频错误
解决步骤 页模板(通常为/article_article.htm),找到分页循环部分的代码,必须使用织梦原生标签:{dede:pagelist listitem=”info,index,end,pre,next,pageno” listsize=”5″/},千万不要自己写<a href=”?page=[field:page/]”>。
2. 开启后台系统-系统基本参数-核心设置-使用伪静态:选“是”,然后到根目录下.htaccess(Apache)或nginx.conf,确认伪静态规则包含了RewriteRule ^article/(.*).html$ /plus/view.php?aid=$1,且没有多余的301规则干扰。
3. 清空data/tplcache下的所有文件,重新生成内容页。
分页链接生成带乱码参数 & #038;符号
报错现象
点分页链接,地址栏出现/article/123.html?page=2&id=123&page=2这种重复参数,或者出现& amp;这种HTML实体符号,页面CSS全乱。
原因分析
织梦的分页标签在生成URL时,如果当前页面变量与分页参数冲突,或者模板里用了{dede:field name=’id’/}强行拼接,会导致参数重复,后台系统参数里“页面URL模式”如果选了“动态模式”,但模板里用静态页路径调用,就会产生混合编码。
解决步骤
- 打开后台-系统-系统基本参数-核心设置-页面URL模式,确认选择“静态模式”。 页模板,删除所有手动拼接的分页链接,只保留
{dede:pagelist/}标签。 - 修改/include/arc.archives.class.php,找到GetPageListDM方法,在
$this->PageList = str_replace(“&”,”&”,$list);这行后面增加:$this->PageList = str_replace(“&″,”&”,$this->PageList);(处理未完整体)。 - 保存后,清空data/tplcache,并重启web服务器。
静态页生成时,分页文件全是0KB
报错现象
后台一键生成所有文档,内容页正常,但每个内容页的分页文件(如article_2.html)全部生成0KB,打开空白。
原因分析
服务器防跨站设置过严,或者data目录写入权限不足,织梦生成分页文件需要写入data/tplcache和生成目录(如a/),如果PHP执行时间太短,分页循环还没写完就被强行终止。
解决步骤
- 检查data、templets、a/(或你的文章存放目录)权限,全部设为755,所属组为www(或nginx/apache用户)。
- 修改php.ini的max_execution_time=300,memory_limit=128M,如果使用宝塔面板,在软件商店-php-配置文件中直接改,保存后重启php。
- 在后台-系统-系统基本参数-性能选项,将“生成HTML每次处理的文档数”调成10,否则一次性加载太多文档分页会超时。
- 手动删除生成目录里所有分页文件,重新生成。
数据库连接失败,分页指向首页
报错现象 页所有分页链接都能正常显示,但点击后跳转到网站首页,地址栏里没有参数变化,日志里报“数据库连接错误”。
原因分析
分页功能依赖数据库查询当前文档的aid和频道信息,如果data/common.inc.php里数据库密码被改了,或者MySQL服务重启但织梦连接池未刷新,会导致查询失败,织梦自动跳转到首页。
解决步骤
- 检查/data/common.inc.php文件,确认
$cfg_dbuser、$cfg_dbpwd与数据库实际信息一致,特别注意密码里有没有特殊字符,,这些字符需要html实体编码。 - 在数据库管理工具(如phpMyAdmin)里执行:
REPAIR TABLE dede_archives;修复数据库表。 - 如果使用阿里云RDS或腾讯云数据库,检查白名单是否允许当前服务器IP连接。
- 重启MySQL服务,然后在后台-系统-数据库备份/恢复里,点击“数据库优化”。
后台登录正常,但内容页分页标签调用无效
报错现象
后台模板里明明写了{dede:pagelist/},但前端显示一片空白,或者只显示“12345”数字,没有链接,查看HTML源码,发现分页部分被注释掉了。
原因分析
模板文件用了UTF-8编码,但织梦默认是GBK,导致标签解析时触发了PHP报错(被隐藏),另一种情况是,用户在调用标签时,不小心把写成了反斜杠,比如{dede:pagelist\}。
解决步骤
- 用Notepad++打开模板文件,查看右下角编码格式,如果是UTF-8,转换为ANSI(GBK)编码,另存覆盖。
- 检查标签书写,正确的完整写法:
{dede:pagelist listitem=”info,index,end,pre,next,pageno” listsize=”5″/},任何简写如{dede:pagelist/}在部分版本中也会生效,但务必确保不含其他英文字符。 - 在后台-模板-默认模板管理里,对应页面模块点击“更新”,系统会重新编译模板。
- 如果仍然无效,进入/include/taglib/pagelist.lib.php,在文件头部增加:
error_reporting(E_ALL);并查看PHP错误日志,定位具体报错行。
内容页面分页链接指向别的栏目
报错现象
比如文章在“新闻”栏目(ID=2),分页链接却指向“产品”栏目(ID=3)的页面,点击进去是别的文章内容。
原因分析
这是典型的频道模型ID混乱,织梦的分页链接基于arc.id生成,但如果模板里手动拼接了channelid参数,或者后台栏目绑定了错误的模型,会导致分页调用其他频道的数据。
解决步骤
- 后台-核心-内容模型管理,检查报错栏目对应的模型ID是否正确,比如新闻栏目应绑定“文章模型”(ID=1)。
- 进入数据库,执行SQL:
SELECT * FROM dede_arctype WHERE id=2;检查channeltype字段,如果是2,说明绑定成了产品模型,修改为1。 - 在后台-系统-SQL命令行工具,执行:
UPDATE dede_arctype SET channeltype=1 WHERE id=2;然后清除缓存。 - 重新生成所有内容页及分页。
最后提醒:织梦的权限和缓存机制非常敏感,改完任何配置或代码,记得执行:
- 后台-系统-系统基本参数-保存并清空缓存
- 手动删除data/tplcache下所有文件
- 重启web服务器
按这套流程走下来,99%的内容页分页链接错误都能在半小时内修复,别怕报错,每一个异常都是一次学习机会。



发表评论