- 列表页链接的基本结构
- 列表页链接是如何生成的?(核心机制)
- 如何修改列表页的链接形式?(伪静态与动态)
- 常见问题与解决方案
列表页链接的基本结构
一个典型的 DedeCMS 列表页链接通常有以下几种形式:

a) 动态链接
这是最基础的形式,URL 中包含 和查询参数。
-
栏目列表页:
https://www.yourdomain.com/plus/list.php?tid=2plus/list.php: 列表页的动态脚本文件。tid=2: 栏目ID,系统通过这个 ID 找到对应的栏目,并调用其内容。
-
分页链接:
https://www.yourdomain.com/plus/list.php?tid=2&PageNo=3PageNo=3: 表示第 3 页。
b) 伪静态链接
这种链接形式看起来像静态的 HTML 文件,但实际上是由服务器动态重写过来的,对搜索引擎更友好。

-
栏目列表页:
https://www.yourdomain.com/seohtml/2.htmlseohtml: 一个自定义的目录,用于存放所有伪静态的列表页和文章页。html: 栏目ID.html,文件名就是栏目 ID。
-
分页链接:
https://www.yourdomain.com/seohtml/2_3.html2_3.html: 栏目ID_页码.html。
列表页链接是如何生成的?(核心机制)
理解这个机制,你就能明白为什么链接会是这样,以及如何去修改它。
链接的生成主要取决于两个核心部分:栏目设置 和 系统全局参数。

在“栏目管理”中设置栏目
这是最关键的一步,当你创建或编辑一个栏目时,需要为其指定链接形式。
- 登录 DedeCMS 后台。
- 进入「核心」 -> 「栏目管理」。
- 点击你要编辑的栏目,进入「常规选项」标签页。
- 找到 列表选项 部分,你会看到 “列表命名规则” 这个输入框。
这个输入框里的内容,就是决定列表页链接格式的核心代码。
默认的命名规则代码解释:
-
默认值(动态链接):
{tid}这是最简单的规则,系统会自动在它外面包装上默认的路径,形成
plus/list.php?tid={tid}。 -
默认伪静态规则:
{tid}/index.html这个规则会生成类似
栏目目录/栏目ID/index.html的链接,在 DedeCMS 的默认伪静态配置中,这个规则通常会被服务器重写为seohtml/{tid}.html。
在“系统参数”中设置全局规则
后台的「系统」 -> 「系统基本参数」 -> 「核心设置」里,也有一处与链接相关的设置。
- 栏目列表命名规则:
- 这个设置通常是一个全局默认值,当你创建新栏目时,如果没有在“栏目管理”中特别指定,就会使用这里的规则。
- 它的作用和“栏目管理”中的“列表命名规则”是一样的,只是作用域不同。优先级是:栏目管理中的设置 > 系统参数中的设置。
服务器进行 URL 重写(伪静态生效的关键)
伪静态链接之所以能工作,不是 DedeCMS 本身直接生成了 HTML 文件,而是服务器(如 Apache, Nginx)将一个看起来像静态文件的 URL,重定向到真正的动态脚本 plus/list.php。
- 以 Nginx 为例:
在你的 Nginx 配置文件中,会有类似下面这样的规则:
# DedeCMS 伪静态规则 rewrite "^/seohtml/([0-9]+)\.html$" /plus/list.php?tid=$1 last; rewrite "^/seohtml/([0-9]+)_(+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last;
rewrite "^/seohtml/([0-9]+)\.html$": 匹配https://www.yourdomain.com/seohtml/2.html这样的 URL。/plus/list.php?tid=$1: 将匹配到的 URL 重写为plus/list.php?tid=2。last: 停止处理当前的 rewrite 规则,并开始搜索匹配的新 location。
总结一下流程:
- DedeCMS 根据你在“栏目管理”中设置的规则(如
{tid}/index.html),生成一个“虚拟”的链接。 - 浏览器请求这个“虚拟”链接(如
seohtml/2.html)。 - 服务器的 URL 重写规则捕获到这个请求,并将其“翻译”成 DedeCMS 能理解的动态脚本请求(
plus/list.php?tid=2)。 - DedeCMS 执行
plus/list.php,获取tid=2的栏目内容,并生成最终的 HTML 页面返回给浏览器。
如何修改列表页的链接形式?
从动态链接改为伪静态链接
这是最常见的操作,目的是提升 SEO 和用户体验。
-
修改栏目设置:
- 进入「栏目管理」,编辑你想要修改的栏目。
- 在“列表命名规则”中,输入你想要的伪静态格式,
{tid}/list.html(会生成栏目目录/栏目ID/list.html){tid}/index.html(默认格式)category/{tid}.html(自定义目录名)
- 点击“保存”。
-
设置服务器伪静态规则:
-
Nginx 用户: 将以下代码添加到你的 Nginx 配置文件中(通常在
server块内),然后重载 Nginx 配置 (nginx -s reload)。location ~* ^/plus/list-([0-9]+)\.html$ { rewrite ^/plus/list-([0-9]+)\.html$ /plus/list.php?tid=$1 last; } location ~* ^/category/([0-9]+)\.html$ { rewrite ^/category/([0-9]+)\.html$ /plus/list.php?tid=$1 last; } # 分页规则 location ~* ^/category/([0-9]+)_(+)\.html$ { rewrite ^/category/([0-9]+)_(+)\.html$ /plus/list.php?tid=$1&PageNo=$2 last; }注意:规则中的
/category/需要和你在栏目命名规则中设置的目录名保持一致。 -
Apache 用户 (.htaccess): 在网站根目录下编辑
.htaccess文件,添加以下代码:<IfModule mod_rewrite.c> RewriteEngine On # 列表页伪静态 RewriteRule ^plus/list-([0-9]+)\.html$ /plus/list.php?tid=$1 RewriteRule ^category/([0-9]+)\.html$ /plus/list.php?tid=$1 # 分页页伪静态 RewriteRule ^category/([0-9]+)_(+)\.html$ /plus/list.php?tid=$1&PageNo=$2 </IfModule>
-
-
更新全站缓存: 在后台更新“HTML 页面”和“栏目链接”,确保所有链接都按照新规则生成。
修改现有伪静态链接的目录名
想把 seohtml 改成 news。
-
修改栏目设置:
- 进入「栏目管理」,编辑所有栏目。
- 将“列表命名规则”从
{tid}/index.html修改为news/{tid}.html。 - 保存所有栏目。
-
修改服务器伪静态规则:
- Nginx: 将规则中的
/seohtml/全部替换为/news/。 - Apache (.htaccess): 将规则中的
/seohtml/全部替换为/news/。
- Nginx: 将规则中的
-
处理旧链接(301重定向):
- 为了避免 SEO 流失,你需要将旧的
seohtml链接 301 重定向到新的news链接。 - Nginx 示例:
# 将旧的 seohtml 目录重定向到新的 news 目录 rewrite "^/seohtml/([0-9]+)\.html$" /news/$1.html permanent; rewrite "^/seohtml/([0-9]+)_(+)\.html$" /news/$1_$2.html permanent;
- Apache (.htaccess) 示例:
# 将旧的 seohtml 目录重定向到新的 news 目录 RedirectMatch 301 ^/seohtml/([0-9]+)\.html$ /news/$1.html RedirectMatch 301 ^/seohtml/([0-9]+)_(+)\.html$ /news/$1_$2.html
- 为了避免 SEO 流失,你需要将旧的
常见问题与解决方案
问题1:设置了伪静态,但打开链接是 404 Not Found。
- 原因: 最常见的原因是服务器没有配置 URL 重写规则。
- 解决方案:
- 确认你的服务器是 Apache 还是 Nginx。
- 检查
.htaccess(Apache) 或 Nginx 配置文件中的伪静态规则是否正确添加。 - 确认规则中的目录名(如
seohtml)是否与你在 DedeCMS 中设置的“列表命名规则”完全一致。 - 修改配置后,务必重启或重载服务器配置。
问题2:列表页链接混乱,有的带 index.html,有的不带。
- 原因: 不同栏目使用了不同的“列表命名规则”,或者系统默认规则和自定义规则混用。
- 解决方案:
- 进入「栏目管理」,检查所有栏目的“列表命名规则”,确保它们是统一的。
- 如果想统一修改,可以批量选中栏目,然后进行编辑,但 DedeCMS 后台不支持批量修改此项,可能需要通过数据库直接操作(风险较高,不推荐新手)或使用一些第三方工具。
问题3:修改了链接后,旧的外部链接失效了。
- 原因: 这是正常的,链接结构改变必然会导致旧链接失效。
- 解决方案:
- 设置 301 重定向: 如上面“场景二”中所述,将旧链接 301 重定向到新链接,这是最规范的做法,能将 SEO 权重传递给新链接。
- 联系外部网站: 如果可能,通知交换友情链接或引用了你网站链接的站长,让他们更新链接地址。
希望这份详细的指南能帮助你完全理解并掌握 DedeCMS 列表页链接的配置!
