这是一个非常核心且常见的问题,理解它对于进行网站二次开发、URL优化和SEO至关重要。

核心结论:织梦文章链接由什么决定?
织梦的文章链接(URL)主要由 “栏目设置” 和 “系统参数设置” 共同决定,它不是直接存储在文章表(dede_archives)里的一串完整URL,而是由一个固定的“文章ID”和可配置的“目录规则”动态拼接而成的。
链接的构成与存储方式
数据库存储:文章ID (aid)
在文章主表 dede_archives 中,并没有一个叫 url 或 link 的字段来存储完整的文章链接。
- 核心字段:
id或aid(文章ID),这是唯一标识一篇文章的数字。 - 相关字段:
typeid: 文章所属的栏目ID。type: 文章所属的模型ID(默认为1,代表文章模型)。senddate: 发布时间(Unix时间戳)。
数据库里只存了“零件”(ID、栏目ID等),不存“成品”(完整URL)。
动态生成:URL规则
织梦通过一个固定的规则来动态生成最终的URL,这个规则分为两部分:

A. 基础路径(系统参数设置)
这个路径定义了文章链接的根目录,在织梦后台可以设置:
- 登录织梦后台。
- 进入 “系统” -> “系统基本参数”。
- 在左侧菜单选择 “核心设置”。
- 找到 “网站文档默认名称规则” 和 “栏目默认页名称规则”,更重要的是 “站点根目录”。
B. 目录规则(栏目设置)
这是最关键的一步,每个栏目都可以独立设置自己的URL规则。
- 在后台 “栏目” 管理中,点击任意一个栏目进入编辑。
- 在栏目编辑页面,找到 “高级选项” 或 “常规选项” 标签页。
- 找到 “文章命名规则” 这个输入框。
这里的值就是决定URL格式的关键,常见的规则如下:
| 规则代码 | 说明 | 示例(栏目ID=5,文章ID=123) | 最终URL |
|---|---|---|---|
{typedir} |
直接使用栏目目录 | /jiaocheng/ |
/jiaocheng/123.html |
{typedir}/{aid}.html |
使用栏目目录 + 文章ID | /jiaocheng/ |
/jiaocheng/123.html |
{typedir}/{Y}/{M}{D}/{aid}.html |
使用栏目目录 + 年月日 + 文章ID | /jiaocheng/ |
/jiaocheng/2025/10/15/123.html |
{typedir}/{Y}/{m}/{aid}.html |
使用栏目目录 + 年/月 + 文章ID | /jiaocheng/ |
/jiaocheng/2025/10/123.html |
{typedir}/{p}/{aid}.html |
使用栏目目录 + 分页(如果栏目有分页) | /jiaocheng/ |
/jiaocheng/1/123.html |
{tid}/{aid}.html |
使用栏目ID + 文章ID | 5/ |
5/123.html |
{pinyin} |
使用文章标题的拼音(需开启拼音功能) | /jiaocheng/ |
/jiaocheng/wangzhanjianshe.html |
注意:{typedir} 本身也是由栏目的“目录属性”决定的,如果栏目目录设置为 /jiaocheng/,{typedir} 的值就是 /jiaocheng/。
如何修改文章链接?
修改文章链接主要有三种情况,对应三种不同的方法。
修改新发布文章的链接格式
这是最常见的需求,比如想把 /archives/123.html 改成 /post/2025/123.html。
操作步骤:
-
修改全局默认规则(可选):
- 进入 “系统” -> “系统基本参数” -> “核心设置”。
- 修改 “网站文档默认名称规则”,将其改为
archives/{Y}/{m}/{aid}.html,这样,所有没有单独设置规则的栏目,新文章都会遵循这个规则。
-
修改指定栏目的规则(推荐):
- 进入 “栏目” 管理,找到你想要修改的栏目。
- 点击该栏目进入 “编辑”。
- 在 “高级选项” 或 “常规选项” 中,找到 “文章命名规则”。
- 修改这个输入框里的内容,你想让“教程”栏目的文章URL是
/jiaocheng/年/月/文章ID.html,就填入:{typedir}/{Y}/{m}/{aid}.html。 - 保存即可。
效果:之后在这个栏目下发布的新文章,URL就会自动按照你设定的规则生成。
修改已有文章的链接
重要提示:直接在数据库里修改 dede_archives 表的 typeid 字段来改变栏目,或者手动拼接URL是错误且危险的,会导致网站链接失效。
正确的方法是使用织梦自带的“批量维护”功能。
操作步骤:
- 登录织梦后台。
- 进入 ” -> “批量维护” -> “SQL命令行工具”。
- 在输入框中执行以下SQL语句(请务必先备份数据库!)。
示例1:将所有文章的栏目ID从10改为20
UPDATE dede_archives SET typeid = 20 WHERE typeid = 10;
执行后,所有原来属于ID为10的栏目的文章,现在都会被系统识别为属于ID为20的栏目,它们的URL会根据新栏目(ID=20)的“文章命名规则”重新生成。
示例2:将所有文章的发布时间改为当前时间(用于触发URL重新生成)
UPDATE dede_archives SET senddate = UNIX_TIMESTAMP(NOW()) WHERE 1;
这个操作本身不改变URL,但如果你后续更新了栏目规则,可以配合使用,或者在某些特殊场景下用于触发织梦重新计算链接。
如何更新URL? 执行完上述SQL后,织梦并不会立即更新所有静态文件,你需要:
- 重新生成栏目:进入“栏目”,点击“一键更新栏目HTML”。
- 重新生成文章:进入“文档列表”,可以全选文章进行“HTML更新”。
实现伪静态(URL重写)
伪静态并不是真正修改了数据库里的链接生成逻辑,而是通过服务器配置,将动态的、带问号的URL(如 /plus/view.php?aid=123)伪装成静态的HTML格式(如 /archives/123.html)。
以Nginx服务器为例:
在Nginx的配置文件中,添加如下规则:
if (!-e $request_filename) {
rewrite "^/archives/(\d+).html$" /plus/view.php?aid=$1 last;
rewrite "^/category/(\d+).html$" /plus/list.php?tid=$1 last;
# ... 其他规则
}
以Apache服务器为例:
在网站根目录下创建或编辑 .htaccess 文件,添加如下规则:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 将 /archives/123.html 转发到动态脚本 RewriteRule ^archives/(\d+).html$ /plus/view.php?aid=$1 [L] # 将 /category/5.html 转发到动态脚本 RewriteRule ^category/(\d+).html$ /plus/list.php?tid=$1 [L] </IfModule>
伪静态的注意事项:
- 服务器支持:确保你的服务器(虚拟主机或VPS)开启了伪静态模块。
- 织梦后台设置:在 “系统” -> “系统基本参数” -> “核心设置” 中,将 “是否使用伪静态” 选项设置为“是”。
- 规则匹配:你的伪静态规则必须和你后台设置的“文章命名规则”相匹配,后台规则是
archives/{aid}.html,那么伪静态规则就要能匹配/archives/123.html这个模式。
| 需求 | 解决方案 | 关键点 |
|---|---|---|
| 修改新文章链接格式 | 修改后台 “栏目” -> “编辑” -> “文章命名规则” | 每个栏目可独立设置,优先级最高。 |
| 修改旧文章所属栏目 | 使用 “SQL命令行工具” 修改 dede_archives 表的 typeid 字段 |
必须备份数据库! 修改后需重新生成栏目和文章。 |
| 让链接更美观(伪静态) | 配置服务器(.htaccess或Nginx)+ 后台开启“是否使用伪静态” |
本质是URL重写,不改变织梦内部逻辑。 |
理解了织梦链接“动态拼接”的原理,你就能灵活地应对各种URL优化和修改需求了。
