搜索全站
百度SEO 9 分钟阅读

HTML 网站地图还有用吗:WordPress 用户可读地图的做法与价值

XML sitemap 是给搜索引擎的,HTML 网站地图是给人的。本文讲清两者的分工,给出 WordPress 生成可读地图页的完整页面模板代码、WordPress 5.5 之后核心 sitemap 的查看方式,以及让 HTML 地图真正发挥收录辅助作用的四个做法。

U
UFO_PF 2025-01-17 · 阅读 9 分钟
HT 百度SEO
阅读提示
本文约 3,502 字,预计阅读 9 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:装了 sitemap 插件,为什么还有人说要做 HTML 地图

很多站长的认知里,”网站地图”就等于那个 XML 文件。XML 地图确实是给搜索引擎看的清单,但它是机器格式,用户点开只会看到一堆 XML 标签。HTML 网站地图解决的是另一个问题:当用户在你的站点里迷路时,有没有一个页面能让他一眼看到全站有什么。

对 SEO 来说,HTML 地图的价值在于它是一个高度聚合的链接枢纽——一个页面上挂着几百个内链,等于给大量页面提供了一条距首页只有一层的通路。

原理分析:两种地图的分工

维度 XML 地图 HTML 地图
面向对象 搜索引擎爬虫 真实访客
主要作用 声明 URL 清单与更新时间 导航、发现、内链枢纽
WordPress 实现 核心 wp-sitemap.xml(5.5 起) 需自建页面模板或插件
是否需要提交 需要,在搜索资源平台提交 不需要,靠内链被发现
是否影响排名 不直接影响 通过内链与可达性间接影响

需要澄清一点:HTML 地图不会直接提升排名。它的价值全部来自间接效应——降低层级深度、提升老文章被发现的概率、减少跳出。如果站点只有 30 篇文章,HTML 地图的意义不大;文章数过百且分类较多时,它的收益才明显。

保姆级实操

步骤 1:确认 XML 地图正常。 WordPress 5.5 起内置 sitemap,默认地址是 /wp-sitemap.xml,它会拆分成「文章、分类、用户」等子地图。先访问确认能正常输出:

curl -s -o /dev/null -w "%{http_code} %{content_type}\n" https://mimangfei.com/wp-sitemap.xml

返回 200 且 content_type 为 xml 才正常。若装了 SEO 插件,插件可能接管了这个地址,以插件说明为准。

步骤 2:建 HTML 地图页面模板。 用页面模板的方式做,不依赖插件,可控性更高:

<?php
/**
 * Template Name: HTML 网站地图
 */
get_header(); ?>
<main class="site-map">
  <h1>全站内容索引</h1>

  <?php
  $cats = get_categories( array(
      'hide_empty' => 1,
      'orderby'    => 'name',
      'order'      => 'ASC',
  ) );

  foreach ( $cats as $cat ) :
      $q = new WP_Query( array(
          'cat'            => $cat->term_id,
          'posts_per_page' => 200,
          'orderby'        => 'date',
          'order'          => 'DESC',
          'no_found_rows'  => true,
      ) );
      if ( ! $q->have_posts() ) {
          continue;
      }
      ?>
      <section>
        <h2><a href="<?php echo esc_url( get_category_link( $cat->term_id ) ); ?>">
          <?php echo esc_html( $cat->name ); ?></a>(<?php echo (int) $cat->count; ?> 篇)</h2>
        <ul>
          <?php while ( $q->have_posts() ) : $q->the_post(); ?>
            <li>
              <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
              <time datetime="<?php echo esc_attr( get_the_date( 'c' ) ); ?>">
                <?php echo esc_html( get_the_date( 'Y-m-d' ) ); ?>
              </time>
            </li>
          <?php endwhile; wp_reset_postdata(); ?>
        </ul>
      </section>
  <?php endforeach; ?>

  <section>
    <h2>页面</h2>
    <ul>
      <?php wp_list_pages( array( 'title_li' => '' ) ); ?>
    </ul>
  </section>
</main>
<?php get_footer();

把这个文件存为 page-sitemap-html.php,放到主题目录,后台新建页面时选择该模板即可。

步骤 3:给地图页加入口。 放在页脚导航里,全站每个页面都能到达。不要藏在”关于我们”下面。

步骤 4:控制单页链接数量。 一个页面挂四五百个链接是可以接受的,但如果上千,页面体积过大、加载变慢,收益反而下降。文章数很多时,按年份或按分类拆成多个地图页,互相链接。

步骤 5:排除不该出现的条目。 地图页里不要列:标签页(内容薄)、附件页、隐私政策之外的无意义页面。用 wp_list_pages 的 exclude 参数或查询参数控制。

步骤 6:地图页本身要可索引。 确认它没有 noindex,且模板输出正常。有些站长给地图页加 noindex 是出于”避免重复内容”的误解,实际上地图页本身就是为索引与发现服务的。

步骤 7:缓存与更新。 几百条查询的页面开销不小,用缓存插件缓存该页面,并在发布新文章时触发缓存刷新(缓存规则配置见 WordPress 页面缓存配置,多数缓存插件默认会在发文时清理首页与相关页,需确认覆盖地图页)。

常见踩坑

  1. 页面模板查询 posts_per_page => -1,上千篇文章一次性查出来,页面加载超过五秒。
  2. 地图页加了 noindex,等于白做。
  3. 入口只放在首页,内页用户看不到。
  4. 把标签页也全列进去,制造大量低质量链接。
  5. 用了插件生成 HTML 地图,但插件在更新后失效,地图页变成空白,无人察觉。
  6. 案例: 某站用插件生成 HTML 地图,一次主题改版后插件的短代码失效,地图页变成空页面且仍被索引。三个月后才发现,期间该页在百度的展现量接近零,原本由它带动的老文章抓取量也同步下滑。改用页面模板后恢复正常。
  7. 地图页没有缓存,每次访问触发数百次查询,拖慢整站。
  8. 认为有了 HTML 地图就可以不提交 XML 地图,事实上后者才是百度识别 URL 的主通道。

总结

判断要不要做 HTML 地图,看文章数:过百且分类较多就值得做。做的要点是——入口放页脚全站可达、单页链接数控制在数百量级、排除标签页与附件页、页面本身保持可索引、务必加缓存。它不直接提升排名,但能明显改善老文章的可达性。结构层面的整体改造思路见 WordPress 内链层级优化。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。