- 修改栏目本身的路径(URL规则)。
- 修改网站的全局设置(是否开启伪静态/静态目录)。
下面我将分步详细讲解,并提供最常见和最推荐的方法。
准备工作:理解织梦的URL结构
在修改之前,先要明白织梦的URL是如何生成的:
- 栏目URL:
主域名/{栏目目录名}/ - 文章URL:
主域名/{栏目目录名}/{文章ID}.html或主域名/{栏目目录名}/{文章名}.html
要实现 主域名/二级目录/内容 的效果,你需要做的是:
- 创建一个名为“二级目录”的顶级栏目。
- 在这个“二级目录”栏目下,再创建具体的子栏目(如“产品”、“新闻”等)。
- 设置好相关的URL规则。
最常用、最规范的方法(推荐)
这种方法通过创建一个顶级栏目来模拟“二级目录”,然后通过设置全局的“栏目目录默认规则”来实现。
步骤 1:创建顶级栏目(作为“二级目录”)
- 登录织梦后台。
- 进入「核心」 -> 「栏目管理」 -> 「添加顶级栏目」。
- 填写栏目信息:
- 栏目名称:
产品中心(或你想要的任何名称,如“blog”、“news”等)。 - 栏目目录:
products(这是URL中实际显示的目录名,建议使用英文小写,不要用中文和特殊符号)。 - : 选择“外部链接”或“单页文档模型”(如果这个目录本身不需要发布内容,只是一个容器)。
- 其他选项可以根据需要填写。
- 栏目名称:
- 点击“确定”保存。
步骤 2:在顶级栏目下创建子栏目
- 回到「栏目管理」,点击刚才创建的“产品中心”栏目后面的“增加子栏目”。
- 创建子栏目,手机”:
- 栏目名称:
手机 - 栏目目录:
mobile - 所属栏目: 选择“产品中心”。
- : 选择“文章系统”(或其他你需要的模型)。
- 栏目名称:
- 重复此步骤,创建其他子栏目,如“笔记本”、“相机”等。
现在你的栏目结构看起来像这样:
- 产品中心 (顶级栏目,目录名:
products)- 手机 (子栏目,目录名:
mobile) - 笔记本 (子栏目,目录名:
laptop)
- 手机 (子栏目,目录名:
步骤 3:修改全局URL设置
这是最关键的一步,它决定了织梦如何生成最终的链接。
-
进入「系统」 -> 「系统基本参数设置」。
-
在左侧菜单中找到「核心设置」。
-
找到并修改以下几项:
-
(重要) 是否使用目录默认主页
- 选择 “是”,这会为每个栏目生成一个
index.html文件,使URL看起来更规范,如products/index.html。 - 如果选择“否”,则直接访问
products/。
- 选择 “是”,这会为每个栏目生成一个
-
(重要) 栏目目录默认规则
- 这是实现“二级目录”的核心!
- 默认值可能是
{typedir},这会生成/products/这样的URL。 - 你需要修改为:
{tid}或{typedir}/ - 推荐使用
{typedir}/,这样,手机栏目的URL就会是主域名/products/mobile/,完全符合你的要求。
-
(重要) 文件命名规则
- 这是文章页面的URL规则,默认可能是
{typedir}/{aid}.html。 - 为了保持一致性,你可以修改为:
{typedir}/{aid}.html或{typedir}/{id}.html。 - 如果你希望URL更友好,可以使用
{typedir}/{pinyin}.html(需要开启拼音支持)或{typedir}/{Y}/{m}/{d}/{aid}.html(按日期归档)。 - 确保这里的规则也包含了
{typedir},这样文章URL才会继承其上级栏目的路径。
- 这是文章页面的URL规则,默认可能是
-
(可选) 是否使用伪静态
- 根据你的服务器环境(如Apache、Nginx)和需求选择。
- 如果开启,文章URL会是
主域名/products/mobile/123.html。 - 如果关闭,URL会是
主域名/products/mobile/?aid=123。 - 强烈建议开启伪静态,并对服务器配置好对应的伪静态规则,这有利于SEO。
-
-
点击“保存”按钮。
步骤 4:更新栏目和文章缓存
修改完全局设置后,需要更新缓存才能生效。
- 在后台右上角,找到“更新缓存”按钮并点击。
- 进入「生成」菜单,依次执行:
- 「更新栏目HTML」:这会重新生成所有栏目页。
- 「更新文档HTML」:这会重新生成所有文章页。
- (可选)「更新主页HTML」。
完成以上步骤后,你的网站二级目录结构就已经成功修改了,访问你的网站,检查栏目和文章的URL是否符合预期。
直接修改数据库(不推荐,仅适用于高级用户)
如果你对数据库非常熟悉,并且网站已经上线,不希望通过后台操作导致长时间等待生成HTML,可以考虑直接修改数据库。
警告:直接操作数据库有风险,请务必提前备份数据库!
- 备份数据库:这是最重要的一步!
- 使用数据库管理工具(如phpMyAdmin)登录你的数据库。
- 找到织梦的表,通常以
dede_开头(你的前缀可能不同)。 - 修改
dede_arctype表(栏目表):- 找到你想修改的二级目录对应的顶级栏目记录。
- 修改
typedir字段,如果你想让它成为products,就将该字段的值改为/products。 - 修改
reid字段,确保它的父级栏目ID(reid)为0,表示它是顶级栏目。
- 修改
dede_archives表(文章表):- 这一步比较复杂,因为文章表里没有直接存储栏目目录名,而是存储了栏目ID (
typeid)。 - 织梦生成URL时,会根据
typeid去dede_arctype表里查找typedir。 - 你只需要确保
dede_arctype表中的数据正确即可,织梦在生成页面时会自动关联。
- 这一步比较复杂,因为文章表里没有直接存储栏目目录名,而是存储了栏目ID (
这种方法虽然直接,但容易出错,且无法像方法一那样直观地预览和修改。强烈建议普通用户使用方法一。
常见问题与解决
Q: 修改后,栏目打不开,显示404错误? A: 这通常是因为服务器没有配置好伪静态规则,如果你在“核心设置”中开启了“是否使用伪静态”,就必须在服务器上添加对应的伪静态规则。
- Apache 伪静态规则 (通常放在
.htaccess文件中):<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)/index\.html $1/index\.php [L] RewriteRule ^(.*)/([a-z0-9\-]+)\.html $1/index\.php\?tid=$2 [L] RewriteRule ^(.*)/([a-z0-9\-]+)/([a-z0-9\-]+)\.html $1/index\.php\?tid=$2&arcid=$3 [L] </IfModule>
- Nginx 伪静态规则 (通常放在
server块中):rewrite "^/([a-z0-9\-]+)/([a-z0-9\-]+)\.html$" /index.php?tid=$1&arcid=$2 last; rewrite "^/([a-z0-9\-]+)/$" /index.php?tid=$1 last; rewrite "^/([a-z0-9\-]+)/index\.html$" /index.php?tid=$1 last;
Q: 为什么我修改了“栏目目录默认规则”后没效果? A: 请检查是否已经执行了“更新缓存”和“更新栏目HTML”操作,织梦的后台配置修改后,需要通过生成操作来应用到实际的HTML文件上。
对于绝大多数用户,方法一是修改织梦二级目录最安全、最直接、最规范的方式,核心在于 创建一个顶级栏目作为目录容器,并正确配置 “栏目目录默认规则” 为 {typedir}/。
