织梦伪静态目录如何设置?

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

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

dedecms织梦伪静态使用目录
(图片来源网络,侵删)
  1. SEO友好:URL结构更清晰,层级分明。example.com/article/123/456.htmlexample.com/123_456.html 更容易被搜索引擎理解,也更有利于内链布局。
  2. 避免冲突:可以有效避免伪静态规则与网站根目录下的实际文件或文件夹(如 about.html, contact.php)发生冲突。
  3. 易于管理:所有的动态链接都被重写到了一个统一的目录下(如 /article/, /list/),网站结构一目了然。

下面我们分步进行讲解,以目前最主流的 NginxApache 服务器为例。


第一步:后台开启伪静态

这是所有伪静态设置的基础,无论你使用目录还是根目录,都必须先在 DedeCMS 后台开启。

  1. 登录您的 DedeCMS 后台。
  2. 进入 “系统” -> “系统基本参数” -> “核心设置”
  3. 找到 “是否使用伪静态” 这一项,将其值修改为 “是”
  4. 点击 “保存”

第二步:修改 DedeCMS 模板文件

这一步是核心,目的是将原来生成的链接格式(如 plus/view.php?aid=123)修改为我们想要的目录格式(如 article/123/456.html)。

你需要修改以下几个关键模板文件:

dedecms织梦伪静态使用目录
(图片来源网络,侵删)

页 (article_article.htm)

这个文件决定了文章内容页的链接。

  • 位置/templets/default/article_article.htm

  • 修改前

    <a href='[field:arcurl/]'>[field:title/]</a>

    [field:arcurl/] 默认会生成类似 plus/view.php?aid=123 的链接。

    dedecms织梦伪静态使用目录
    (图片来源网络,侵删)
  • 修改后: 我们使用 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>

    最简洁、最推荐的方法:直接使用 idtypeid 标签手动构建。

    <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 的配置非常简洁高效。

  1. 找到 Nginx 配置文件:通常位于 /usr/local/nginx/conf/nginx.conf 或您网站对应的配置文件中(如 /etc/nginx/sites-available/your_domain.conf)。

  2. 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/ 的规则同理,分别处理栏目列表页。
  3. 保存配置文件,并重启 Nginx 服务

    # 检查配置文件语法是否正确
    nginx -t
    # 如果没问题,平滑重启 Nginx
    nginx -s reload

Apache 服务器

Apache 的配置通常通过 .htaccess 文件实现。

  1. 确保 Apache 已开启 mod_rewrite 模块

  2. 在您的网站根目录(/public_html//wwwroot/)下找到或创建 .htaccess 文件

  3. 在文件中添加或修改以下规则

    <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

第四步:更新和测试

  1. 更新首页和列表页

    • 进入 DedeCMS 后台 “生成” -> “更新主页HTML”,生成新的首页。
    • 进入 “生成” -> “更新栏目HTML”“更新文档HTML”,生成新的列表页和文章页,这一步非常重要,它会让 DedeCMS 根据你修改后的模板,生成符合新规则的静态或伪静态页面。
  2. 测试

    • 清除浏览器缓存。
    • 访问你的网站首页,点击一篇文章链接,看 URL 是否变成了 http://yourdomain.com/article/123.html 的形式,并且能正常打开。
    • 点击一个“更多...”链接,看栏目列表页的 URL 是否变成了 http://yourdomain.com/category/123/ 的形式,并且能正常显示列表。

总结与注意事项

步骤 操作 关键点
后台设置 开启伪静态 系统 -> 系统基本参数 -> 核心设置 -> 是否使用伪静态 = 是
模板修改 修改 arcurltypeurl 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 网站配置出美观、实用且对搜索引擎友好的目录形式伪静态了。

-- 展开阅读全文 --
头像
MySQL与Dede的Arctiny如何协同工作?
« 上一篇 2025-12-12
织梦search.php页面空白是什么原因?
下一篇 » 2025-12-12

相关文章

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

目录[+]