数据库织梦文章链接如何生成?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 织梦建站 正文

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

数据库织梦文章链接
(图片来源网络,侵删)

核心结论:织梦文章链接由什么决定?

织梦的文章链接(URL)主要由 “栏目设置”“系统参数设置” 共同决定,它不是直接存储在文章表(dede_archives)里的一串完整URL,而是由一个固定的“文章ID”和可配置的“目录规则”动态拼接而成的。


链接的构成与存储方式

数据库存储:文章ID (aid)

在文章主表 dede_archives 中,并没有一个叫 urllink 的字段来存储完整的文章链接。

  • 核心字段idaid (文章ID),这是唯一标识一篇文章的数字。
  • 相关字段
    • typeid: 文章所属的栏目ID。
    • type: 文章所属的模型ID(默认为1,代表文章模型)。
    • senddate: 发布时间(Unix时间戳)。

数据库里只存了“零件”(ID、栏目ID等),不存“成品”(完整URL)。

动态生成:URL规则

织梦通过一个固定的规则来动态生成最终的URL,这个规则分为两部分:

数据库织梦文章链接
(图片来源网络,侵删)

A. 基础路径(系统参数设置)

这个路径定义了文章链接的根目录,在织梦后台可以设置:

  1. 登录织梦后台。
  2. 进入 “系统” -> “系统基本参数”
  3. 在左侧菜单选择 “核心设置”
  4. 找到 “网站文档默认名称规则”“栏目默认页名称规则”,更重要的是 “站点根目录”

B. 目录规则(栏目设置)

这是最关键的一步,每个栏目都可以独立设置自己的URL规则。

  1. 在后台 “栏目” 管理中,点击任意一个栏目进入编辑。
  2. 在栏目编辑页面,找到 “高级选项”“常规选项” 标签页。
  3. 找到 “文章命名规则” 这个输入框。

这里的值就是决定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

操作步骤:

  1. 修改全局默认规则(可选)

    • 进入 “系统” -> “系统基本参数” -> “核心设置”
    • 修改 “网站文档默认名称规则”,将其改为 archives/{Y}/{m}/{aid}.html,这样,所有没有单独设置规则的栏目,新文章都会遵循这个规则。
  2. 修改指定栏目的规则(推荐)

    • 进入 “栏目” 管理,找到你想要修改的栏目。
    • 点击该栏目进入 “编辑”
    • “高级选项”“常规选项” 中,找到 “文章命名规则”
    • 修改这个输入框里的内容,你想让“教程”栏目的文章URL是 /jiaocheng/年/月/文章ID.html,就填入:{typedir}/{Y}/{m}/{aid}.html
    • 保存即可。

效果:之后在这个栏目下发布的新文章,URL就会自动按照你设定的规则生成。

修改已有文章的链接

重要提示:直接在数据库里修改 dede_archives 表的 typeid 字段来改变栏目,或者手动拼接URL是错误且危险的,会导致网站链接失效。

正确的方法是使用织梦自带的“批量维护”功能。

操作步骤:

  1. 登录织梦后台。
  2. 进入 ” -> “批量维护” -> “SQL命令行工具”
  3. 在输入框中执行以下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优化和修改需求了。

-- 展开阅读全文 --
头像
dede文章模板修改,具体改哪里?
« 上一篇 04-27
C语言笔试题常见考点有哪些?
下一篇 » 04-27

相关文章

取消
微信二维码
支付宝二维码

目录[+]