dede5.7 tag 静态化

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 DEDE建站 正文

Tag 静态化(也称为“伪静态”)的主要目的是:

dede5.7 tag 静态化
(图片来源网络,侵删)
  1. SEO 优化:生成 .html 后缀的静态页面,对搜索引擎更友好,有利于收录。
  2. 提升用户体验:URL 更美观、更符合用户习惯,易于理解和记忆。
  3. 减轻服务器压力:当页面被访问时,直接读取静态 HTML 文件,而不是动态解析 PHP 和查询数据库,可以显著减轻服务器 CPU 和数据库的负担。

在 DedeCMS 5.7 中,Tag 静态化主要通过修改核心文件和配置服务器重写规则来实现,下面是详细的步骤和说明。


第一步:开启 DedeCMS 系统的“使用伪静态”

这是最基础的一步,告诉 DedeCMS 系统你需要使用伪静态功能。

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

第二步:修改 arc.taglist.class.php 文件(核心步骤)

这是实现 Tag 静态化的关键,我们需要修改这个文件,让它在生成 Tag 页面时,生成一个静态的 HTML 文件,而不是一个动态的 PHP 链接。

  1. 文件位置/include/arc.taglist.class.php

  2. 修改方法: 用编辑器(如 Dreamweaver、VS Code 或 Notepad++)打开这个文件。

  3. 查找并修改代码: 搜索 GetMakeTagList 函数,在这个函数中,找到生成链接的代码段,它通常是这样的:

    // 找到类似下面这行代码
    $this->TagInfos['link'] = $cfg_cmsurl."/tags.php?/".urlencode($this->TagInfos['keyword'])."/";

    将其修改为

    // 修改为生成 .html 后缀的链接
    $this->TagInfos['link'] = $cfg_cmsurl."/tags/".urlencode($this->TagInfos['keyword']).".html";

    注意:这里的 /tags/ 是你自定义的目录,可以根据你的喜好修改,/tag//list/tag/,确保这个目录在你的网站根目录下存在。


第三步:修改 taglib/taglib.lib.php 文件(修正链接)

这一步是为了确保在模板文件(如首页、列表页)中调用 Tag 时,生成的链接也是静态的。

  1. 文件位置/include/taglib/taglib.lib.php

  2. 查找并修改代码: 搜索 function GetTags 函数,找到其中生成链接的部分,通常是 return $tags; 之前。

    找到类似这样的代码块:

    foreach($dsql->GetArray() as $row)
    {
        $row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['tag'])."/";
        $tags[] = $row;
    }

    将其修改为

    foreach($dsql->GetArray() as $row)
    {
        // 修改为生成 .html 后缀的链接
        $row['link'] = $cfg_cmsurl."/tags/".urlencode($row['tag']).".html";
        $tags[] = $row;
    }

第四步:配置服务器重写规则(伪静态规则)

这是最重要的一步,它告诉 Web 服务器(如 Apache 或 Nginx)如何将用户请求的 xxx.html 地址,真实地指向 tags.php 文件来处理。

A. Apache 服务器

  1. 确认开启 mod_rewrite:确保你的 Apache 服务器已加载了 mod_rewrite 模块,通常虚拟主机都已默认开启。

  2. 创建或修改 .htaccess 文件: 在你的网站根目录下,找到或创建一个名为 .htaccess 的文件,如果文件不存在,请创建一个。

  3. 添加以下规则

    <IfModule mod_rewrite.c>
      RewriteEngine On
      # 将 /tags/xxx.html 的请求转发给 tags.php
      RewriteRule ^tags/(.*).html$ /tags.php?/$1/ [L]
      # 如果你的网站开启了全站伪静态,还需要添加以下规则
      # RewriteRule ^tags/(.*).html$ /tags.php?/$1/ [L]
      # RewriteRule ^index.html$ /index.php [L]
      # RewriteRule ^plus/list-([0-9]+).html$ /plus/list.php?tid=$1 [L]
      # RewriteRule ^plus/view-([0-9]+)-([0-9]+)-([0-9]+).html$ /plus/view.php?aid=$1&cid=$2&mid=$3 [L]
      # ... 其他你的网站用到的伪静态规则 ...
    </IfModule>

    规则解释RewriteRule ^tags/(.*).html$ /tags.php?/$1/ [L]

    • ^tags/(.*).html$:匹配所有以 tags/ 开头,以 .html 结尾的 URL。tags/网站建设.html
    • /tags.php?/$1/:将匹配到的内容(网站建设)作为参数,传递给 tags.php$1 是一个变量,代表第一个括号 捕获到的内容。
    • [L]:表示如果这条规则匹配成功,就停止处理后续的 RewriteRule。

B. Nginx 服务器

  1. 找到配置文件:编辑 Nginx 的虚拟主机配置文件,通常在 /etc/nginx/sites-available/ 目录下。

  2. server 块内添加以下规则

    server {
        ... 其他配置 ...
        location / {
            ... 其他规则 ...
        }
        # 添加 Tag 静态化规则
        location ~* ^tags/(.*).html$ {
            rewrite "^tags/(.*).html$" /tags.php?/$1/ last;
        }
        ... 其他配置 ...
    }

    规则解释location ~* ^tags/(.*).html$:匹配所有以 tags/ 开头,以 .html 结尾的 URL,不区分大小写。 rewrite "^tags/(.*).html$" /tags.php?/$1/ last;:将 URL 重写,并传递参数。 last:表示停止在本 location 中搜索,并搜索匹配新 URI 的 location。

  3. 重启 Nginx:保存配置文件后,执行命令 sudo nginx -s reloadsudo systemctl restart nginx 使配置生效。


第五步:更新和生成

完成以上所有步骤后,你需要更新一下系统,让新的规则生效。

  1. 进入 DedeCMS 后台【生成】-> 更新主页HTML
  2. 进入【更新缓存】。
  3. (可选但推荐)进入【文档列表】-> 文档HTML设置,确保“使用动态页”是“否”,然后选择“更新所有HTML”。
  4. 为了生成 Tag 静态页面,你可以访问你的 Tag 列表页(你的域名/tags.php),系统会自动为你已存在的 Tag 生成对应的 .html 文件,新生成的文章带有 Tag 也会自动生成。

常见问题与排查

  1. 404 Not Found 错误

    • 原因:伪静态规则未生效或配置错误。
    • 排查
      • 检查 .htaccess 文件是否在网站根目录,且内容正确。
      • 检查 Nginx/Apache 的配置语法是否正确,并已重启服务。
      • 确认服务器是否支持伪静态。
      • 尝试直接访问 tags.php 看是否正常,以排除 PHP 代码问题。
  2. 页面空白或显示 PHP 源码

    • 原因:服务器没有将 .html 请求正确地转发给 tags.php 解析。
    • 排查:重新检查第四步的伪静态规则,确保 RewriteRule 的语法和目标路径正确。
  3. 生成的链接不正确

    • 原因:第二步或第三步的代码修改有误。
    • 排查:重新核对 arc.taglist.class.phptaglib/taglib.lib.php 中的 $this->TagInfos['link']$row['link'] 是否被正确修改为 .html 格式。

通过以上五个步骤,你就可以成功地为 DedeCMS 5.7 的 Tag 标签实现静态化,从而提升网站的 SEO 和性能。

-- 展开阅读全文 --
头像
织梦怎么调用一下个栏目
« 上一篇 01-04
织梦自定义表单 下一步
下一篇 » 01-04

相关文章

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

目录[+]