织梦dede模板自带地图如何优化?

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

我们将从 基础配置、优化升级、高级技巧 三个层面来展开。

织梦dede模板自带的网站地图优化指南
(图片来源网络,侵删)

基础配置:正确生成和使用默认地图

在开始优化之前,请确保你已经正确配置并生成了默认的网站地图。

地图类型与位置

织梦默认提供两种地图:

  • HTML地图: yourdomain.com/sitemap.html
    • 作用: 主要为访客服务,提供一个清晰的网站结构导航,方便用户查找内容。
    • 特点: 人类可读,结构化良好。
  • XML地图: yourdomain.com/sitemap.xml
    • 作用: 主要为搜索引擎服务(如百度、谷歌),告诉搜索引擎网站上有哪些页面可以抓取。
    • 特点: 机器可读,标准格式。

后台生成步骤

  1. 登录织梦DedeCMS后台。
  2. 菜单栏:“生成” -> “网站地图更新”
  3. 在这里你可以设置:
    • 主页链接: 默认是你的首页URL。
    • 其他页: 默认包含首页、栏目页、内容页,你可以勾选或取消。
    • 文件名: 默认是 sitemap.htmlsitemap.xml
  4. 点击 “开始生成网站地图” 按钮。

重要提示:

  • 每当你更新了网站内容(新增文章、删除文章、修改栏目等),都应该重新生成一次地图,以确保搜索引擎拿到的是最新的版本。
  • sitemap.xml 的地址提交到百度站长平台和Google Search Console中,让搜索引擎主动抓取。

优化升级:让默认地图更强大

默认地图功能有限,例如不包含自定义页面、单页等,我们可以通过修改模板和代码来优化它。

织梦dede模板自带的网站地图优化指南
(图片来源网络,侵删)

优化1:确保地图包含所有重要页面

默认的地图可能不包含你网站的所有重要页面,

  • 自定义页面 (如“关于我们”、“联系我们”)
  • 单页文档 (如“公司简介”)
  • TAG标签页
  • 搜索结果页 (通常不需要包含)

修改方法 (以包含自定义页面为例):

织梦默认的地图生成逻辑在 /include/sitemap.class.php 文件中,我们可以修改这个文件来增加包含的类型。

  1. 备份文件: 在修改前,务必备份 /include/sitemap.class.php

    织梦dede模板自带的网站地图优化指南
    (图片来源网络,侵删)
  2. 编辑文件: 打开 /include/sitemap.class.php

  3. 找到生成栏目和文章的函数:

    • 生成栏目页的函数是 GetIndexList()
    • 生成文章列表页的函数是 GetArcList()
  4. 添加自定义页面的生成逻辑: 在 GetArcList() 函数之后,添加一个新的函数来获取自定义页面。

    // 在 GetArcList() 函数后添加
    function GetSelfList()
    {
        global $dsql;
        $s = "";
        $query = "SELECT * FROM `dede_arctype` WHERE ispart<>2 AND channeltype='-1' ORDER by sortrank asc";
        $dsql->SetQuery($query);
        $dsql->Execute();
        while ($row = $dsql->GetArray()) {
            $typeurl = GetTypeUrl($row['typeid'], $row['typedir'], $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule2'], $row['moresite'], $row['siteurl']);
            $s .= "<div class=\"site-map-list\">\r\n";
            $s .= "<a href=\"" . $typeurl . "\">" . $row['typename'] . "</a>\r\n";
            $s .= "</div>\r\n";
        }
        return $s;
    }
  5. 调用新函数: 修改 GetSiteMapHtml() 函数,在适当的位置调用 GetSelfList()

    // 修改 GetSiteMapHtml() 函数
    function GetSiteMapHtml()
    {
        $indexlist = $this->GetIndexList();
        $arcList = $this->GetArcList();
        $selfList = $this->GetSelfList(); // 调用新函数
        $html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>网站地图 - ' . $GLOBALS['cfg_webname'] . '</title>
        <meta name="author" content="' . $GLOBALS['cfg_webname'] . '" />
        <link rel="stylesheet" type="text/css" href="' . $GLOBALS['cfg_cmspath'] . '/templets/style/map.css" />
        </head>
        <body>
        <div class="sitemap">
        <h1><a href="' . $GLOBALS['cfg_basehost'] . '">' . $GLOBALS['cfg_webname'] . '</a> - 网站地图</h1>
        <div class="site-map-main">
        ' . $indexlist . '
        ' . $arcList . '
        ' . $selfList . ' // 将自定义页面列表插入到这里
        </div>
        </div>
        </body>
        </html>';
        return $html;
    }
  6. 重新生成地图: 在后台重新生成网站地图,新的 sitemap.html 就会包含你的自定义页面了。

注意: 修改核心文件有风险,升级DedeCMS时可能会被覆盖,建议记录好修改内容,以便后续升级后重新应用。

优化2:优化 sitemap.xml 格式

默认的 sitemap.xml 可能不是标准的Sitemap格式(缺少 <lastmod><changefreq><priority> 等标签)。

修改方法:

  1. 找到生成XML的函数: 在 sitemap.class.php 中找到 GetSiteMapXml() 函数。

  2. 修改函数逻辑: 修改它,使其生成符合标准的XML。

    // 修改 GetSiteMapXml() 函数
    function GetSiteMapXml()
    {
        global $dsql;
        $s = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
        $s .= "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
        // 1. 添加首页
        $s .= "  <url>\n";
        $s .= "    <loc>" . $GLOBALS['cfg_basehost'] . "/</loc>\n";
        $s .= "    <lastmod>" . date('Y-m-d', time()) . "</lastmod>\n";
        $s .= "    <changefreq>daily</changefreq>\n";
        $s .= "    <priority>1.0</priority>\n";
        $s .= "  </url>\n";
        // 2. 添加栏目页
        $dsql->SetQuery("SELECT * FROM `dede_arctype` WHERE ispart<>2 ORDER by sortrank asc");
        $dsql->Execute();
        while ($row = $dsql->GetArray()) {
            $typeurl = GetTypeUrl($row['typeid'], $row['typedir'], $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule2'], $row['moresite'], $row['siteurl']);
            $s .= "  <url>\n";
            $s .= "    <loc>" . $typeurl . "</loc>\n";
            $s .= "    <lastmod>" . date('Y-m-d', $row['uptime']) . "</lastmod>\n";
            $s .= "    <changefreq>weekly</changefreq>\n";
            $s .= "    <priority>0.8</priority>\n";
            $s .= "  </url>\n";
        }
        // 3. 添加文章页 (这是最耗时的部分,大站要小心)
        // 为了防止超时,可以分页查询或限制数量
        $dsql->SetQuery("SELECT * FROM `dede_archives` ORDER BY pubdate DESC LIMIT 1000"); // 限制为最新的1000篇文章
        $dsql->Execute();
        while ($row = $dsql->GetArray()) {
            $arcUrl = GetFileUrl($row['id'], $row['typeid'], $row['senddate'], $row['title'], $row['ismake'], $row['arcrank'], $row['namerule'], $row['typedir'], $row['money'], $row['filename'], $row['moresite'], $row['siteurl'], $row['sitepath']);
            $s .= "  <url>\n";
            $s .= "    <loc>" . $arcUrl . "</loc>\n";
            $s .= "    <lastmod>" . date('Y-m-d', $row['pubdate']) . "</lastmod>\n";
            $s .= "    <changefreq>monthly</changefreq>\n";
            $s .= "    <priority>0.6</priority>\n";
            $s .= "  </url>\n";
        }
        $s .= "</urlset>";
        return $s;
    }
  3. 重新生成地图: 生成后,你的 sitemap.xml 就会是一个标准的、信息更丰富的地图文件,对搜索引擎更友好。


高级技巧:超越自带地图

如果你的网站内容非常多(比如数万篇文章),织梦自带的地图生成方式可能会很慢,甚至导致服务器超时,这时就需要更高级的方案。

技巧1:使用第三方地图生成插件

这是最推荐、最安全、最方便的方法,许多开发者已经制作了功能强大的地图生成插件。

  • 优点:

    • 不修改核心文件: 升级DedeCMS时不会被覆盖。
    • 功能强大: 通常支持分页生成、自动提交、生成多种格式(HTML, XML, TXT, ROR等)。
    • 性能优化: 内置缓存机制,生成速度快,不会拖慢网站。
    • 界面友好: 后台操作简单直观。
  • 如何寻找:

    • 在织梦官方论坛、Dede模板吧等社区搜索“网站地图插件”。
    • 购买或下载成熟的商业插件。

技巧2:使用Nginx/Apache的地图生成模块 (适合大站)

对于超大型网站,手动生成地图已经不可行,可以利用Web服务器的模块来实时生成。

  • Nginx: 可以使用 ngx_sitemap 模块。

  • Apache: 可以使用 mod_sitemap 模块。

  • 工作原理: 这些模块会在用户访问 sitemap.xml 时,根据数据库实时(或通过缓存)生成地图内容,然后返回给用户,这避免了在后台手动生成,实现自动化。

  • 缺点:

    • 需要服务器有编译安装模块的权限。
    • 配置相对复杂,不适合新手。

技巧3:使用Sitemap索引文件

如果你的网站内容实在太多,一个 sitemap.xml 文件会非常大(超过10MB或包含5万个URL),这不符合Sitemap协议的建议。

这时,你应该使用Sitemap索引文件

  1. 创建多个子地图文件:

    • sitemap-articles-1.xml (包含1-5000篇文章)
    • sitemap-articles-2.xml (包含5001-10000篇文章)
    • sitemap-categories.xml (只包含所有栏目)
    • sitemap-pages.xml (只包含自定义页面)
  2. 创建索引文件 sitemap_index.xml: 这个文件本身不包含URL,而是指向上面所有的子地图文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
      <sitemap>
        <loc>https://www.yourdomain.com/sitemap-articles-1.xml</loc>
        <lastmod>2025-10-27</lastmod>
      </sitemap>
      <sitemap>
        <loc>https://www.yourdomain.com/sitemap-articles-2.xml</loc>
        <lastmod>2025-10-27</lastmod>
      </sitemap>
      <sitemap>
        <loc>https://www.yourdomain.com/sitemap-categories.xml</loc>
        <lastmod>2025-10-26</lastmod>
      </sitemap>
    </sitemapindex>
  3. 提交索引文件: 只需要将 sitemap_index.xml 提交给搜索引擎即可,搜索引擎会自动去抓取它引用的所有子地图。


总结与最佳实践

优化级别 方法 优点 缺点 适用场景
基础 后台生成默认地图 简单、快速 功能有限,SEO价值低 所有网站,作为基础配置
进阶 修改 sitemap.class.php 自由度高,定制性强 风险高(升级覆盖),代码复杂 有一定开发能力,需求特殊的中小型网站
高级 使用第三方插件 推荐!安全、强大、易用 可能需要付费或寻找可靠资源 绝大多数网站的最佳选择
专业 Sitemap索引文件 解决超大网站的地图问题 实现复杂,需要服务器支持 站,URL数量巨大

给你的行动建议:

  1. 新手/普通用户: 直接使用后台生成功能,然后去站长平台提交,如果觉得不够用,花点时间找一个评价好的第三方地图插件,一劳永逸。
  2. 开发者/高级用户: 可以尝试修改核心文件进行深度定制,但务必做好备份和版本控制。
  3. 大型网站: 必须考虑第三方插件Sitemap索引文件方案,以保证地图生成效率和服务器稳定。

希望这份指南能帮助你完美优化织梦DedeCMS的网站地图,提升网站的SEO效果!

-- 展开阅读全文 --
头像
c语言上机指导与习题选解答案正确吗?
« 上一篇 2025-12-03
HTML5织梦后台模板如何适配高端织梦系统?
下一篇 » 2025-12-03

相关文章

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

目录[+]