这其实是一个非常好的实践,相比根目录伪静态,目录伪静态有以下几个显著优点:

- SEO友好:URL结构更清晰,层级分明。
example.com/article/123/456.html比example.com/123_456.html更容易被搜索引擎理解,也更有利于内链布局。 - 避免冲突:可以有效避免伪静态规则与网站根目录下的实际文件或文件夹(如
about.html,contact.php)发生冲突。 - 易于管理:所有的动态链接都被重写到了一个统一的目录下(如
/article/,/list/),网站结构一目了然。
下面我们分步进行讲解,以目前最主流的 Nginx 和 Apache 服务器为例。
第一步:后台开启伪静态
这是所有伪静态设置的基础,无论你使用目录还是根目录,都必须先在 DedeCMS 后台开启。
- 登录您的 DedeCMS 后台。
- 进入 “系统” -> “系统基本参数” -> “核心设置”。
- 找到 “是否使用伪静态” 这一项,将其值修改为 “是”。
- 点击 “保存”。
第二步:修改 DedeCMS 模板文件
这一步是核心,目的是将原来生成的链接格式(如 plus/view.php?aid=123)修改为我们想要的目录格式(如 article/123/456.html)。
你需要修改以下几个关键模板文件:

页 (article_article.htm)
这个文件决定了文章内容页的链接。
-
位置:
/templets/default/article_article.htm -
修改前:
<a href='[field:arcurl/]'>[field:title/]</a>
[field:arcurl/]默认会生成类似plus/view.php?aid=123的链接。
(图片来源网络,侵删) -
修改后: 我们使用 DedeCMS 的
MakeHtml()函数来生成我们想要的链接格式,假设我们要生成article/{栏目ID}/{文章ID}.html的格式。<a href='{dede:field name='arcurl' function='str_replace("plus/view.php?aid=@me", "article/@me.html", "@me)'/}'>[field:title/]</a>更推荐和通用的写法是使用
regex替换:<a href='{dede:field name='arcurl' function='str_replace("plus/view.php?aid=","article/",@me)'/}.html'>[field:title/]</a>这种写法会生成
article/123.html的格式,如果你想包含栏目ID,可以这样做:<!-- 先获取栏目ID,再拼接URL --> {dede:field name='typeid'/} <a href='article/{dede:field.name='typeid'/}/{dede:field.id/}.html'>[field:title/]</a>最简洁、最推荐的方法:直接使用
id和typeid标签手动构建。<a href='/article/{dede:field.id/}.html'>[field:title/]</a>这里我们选择最简单的
article/{id}.html格式,你可以根据需要调整目录名和路径。
文章列表页 (list_article.htm)
这个文件决定了列表页中文章列表的链接。
-
位置:
/templets/default/list_article.htm -
修改:同样需要修改文章列表中的链接标签,与
article_article.htm中的修改方法一致。<li><a href='/article[field:id/].html'>[field:title/]</a></li>
栏目列表页 (index.htm 或栏目对应的模板)
这个文件决定了首页或栏目页的“更多”链接,以及指向其他栏目列表页的链接。
-
位置:
/templets/default/index.htm或/templets/default/list_xxx.htm(xxx是栏目ID) -
修改前:
<a href='[field:typeurl/]'>更多...</a>
[field:typeurl/]默认生成plus/list.php?tid=123。 -
修改后: 我们将其修改为目录格式,
category/123/。<a href='/category/{dede:field.id/}/'>更多...</a>或者使用函数替换:
<a href='{dede:field.typeurl function="str_replace('plus/list.php?tid=', 'category/', @me)'/}'>更多...</a>
第三步:配置服务器伪静态规则
这是让服务器将你生成的漂亮 URL 转发给 DedeCMS 处理的关键。
Nginx 服务器 (推荐)
Nginx 的配置非常简洁高效。
-
找到 Nginx 配置文件:通常位于
/usr/local/nginx/conf/nginx.conf或您网站对应的配置文件中(如/etc/nginx/sites-available/your_domain.conf)。 -
在
server块内添加以下规则:# DedeCMS 伪静态规则 (目录形式) rewrite "^/article/([0-9]+)\.html$" /plus/view.php?arcid=$1 last; rewrite "^/category/([0-9]+)/$" /plus/list.php?tid=$1 last; # 如果你的栏目页是 /list/xxx/ 的格式,则使用下面这句 # rewrite "^/list/([0-9]+)/$" /plus/list.php?tid=$1 last;
^/article/([0-9]+)\.html$:匹配以/article/开头,后面是数字,并以.html结尾的 URL。/plus/view.php?arcid=$1:将其重写为 DedeCMS 的文章动态链接,$1代表第一个括号捕获的数字(文章ID)。last:表示完成本次重写后,停止处理rewrite模块,并搜索匹配 location。category/和list/的规则同理,分别处理栏目列表页。
-
保存配置文件,并重启 Nginx 服务:
# 检查配置文件语法是否正确 nginx -t # 如果没问题,平滑重启 Nginx nginx -s reload
Apache 服务器
Apache 的配置通常通过 .htaccess 文件实现。
-
确保 Apache 已开启
mod_rewrite模块。 -
在您的网站根目录(
/public_html/或/wwwroot/)下找到或创建.htaccess文件。 -
在文件中添加或修改以下规则:
<IfModule mod_rewrite.c> RewriteEngine On # DedeCMS 伪静态规则 (目录形式) RewriteBase / RewriteRule ^article/([0-9]+)\.html$ /plus/view.php?arcid=$1 [L] RewriteRule ^category/([0-9]+)/$ /plus/list.php?tid=$1 [L] # 如果你的栏目页是 /list/xxx/ 的格式,则使用下面这句 # RewriteRule ^list/([0-9]+)/$ /plus/list.php?tid=$1 [L] </IfModule>
RewriteEngine On:开启重写引擎。RewriteBase /:设置重写的基准目录,如果你的网站在子目录,需要修改这里,如RewriteBase /your_subdir/。RewriteRule:定义具体的重写规则。[L]:表示这是最后一条规则,如果匹配到,则不再执行后续的RewriteRule。
第四步:更新和测试
-
更新首页和列表页:
- 进入 DedeCMS 后台 “生成” -> “更新主页HTML”,生成新的首页。
- 进入 “生成” -> “更新栏目HTML” 或 “更新文档HTML”,生成新的列表页和文章页,这一步非常重要,它会让 DedeCMS 根据你修改后的模板,生成符合新规则的静态或伪静态页面。
-
测试:
- 清除浏览器缓存。
- 访问你的网站首页,点击一篇文章链接,看 URL 是否变成了
http://yourdomain.com/article/123.html的形式,并且能正常打开。 - 点击一个“更多...”链接,看栏目列表页的 URL 是否变成了
http://yourdomain.com/category/123/的形式,并且能正常显示列表。
总结与注意事项
| 步骤 | 操作 | 关键点 |
|---|---|---|
| 后台设置 | 开启伪静态 | 系统 -> 系统基本参数 -> 核心设置 -> 是否使用伪静态 = 是 |
| 模板修改 | 修改 arcurl 和 typeurl |
在 article_article.htm, list_article.htm 等模板中使用 str_replace 函数或手动拼接 URL,如 /article/{id}.html |
| 服务器配置 | 添加重写规则 | Nginx: 在 server 块添加 rewrite 规则。Apache: 在 .htaccess 中添加 RewriteRule。 |
| 更新与测试 | 生成页面并验证 | 后台生成主页、栏目、文档,清除浏览器缓存测试新链接。 |
重要提示:
- URL格式要统一:在模板中,尽量使用一种固定的URL格式,不要有的用
article/,有的用a/,这样不利于SEO和用户体验。 - 如果网站已上线:修改模板和服务器规则后,建议通过301重定向将旧的动态链接或旧格式的伪静态链接跳转到新的链接,避免权重流失。
- 目录名:
article,category,list这些目录名可以自定义,但不要和网站已有的实际目录重名。
通过以上步骤,你就可以成功地为你的 DedeCMS 网站配置出美观、实用且对搜索引擎友好的目录形式伪静态了。
