欢迎来到淼淼之森的博客小站。  交流请加我微信好友: studyjava。  也欢迎关注同名公众号:Java学习之道

java使用sitemapgen4j生成网站的站点地图sitemap 置顶!

  |   0 评论   |   0 浏览

序言

sitemap 是什么?

对应没有接触过网站 SEO 的同学可能不知道,这里引用一下百度站长的一段解释。

Sitemap(即站点地图)就是您网站上各网页的列表。创建并提交Sitemap有助于百度发现并了解您网站上的所有网页。您还可以使用Sitemap提供有关您网站的其他信息,如上次更新日期、Sitemap文件的更新频率等,供百度Spider参考。所以 sitemap 就是搜索引擎爬虫便于爬取到网站内的所有网页。

SEO之初

之前特意通过 site 指令查询过公司同行业网站的收录情况,发现搜索引擎对于我司的网站收录数量真的不是差了一星半点-.-,原因嘛,就是一直没有专门的人做 SEO 优化工作。

简单理解就是: 一个按照指定规则生成的xml文件,用于指引搜索引擎的爬虫去爬取索引你的网站。

实现方式

sitemap

sitemap 的格式一般是 XML 格式的,但因为 sitemap 文件的限制,同一个 sitemap 文件最多有 5 万条 URL,超出 5 万条,就应该放入到下一个 sitemap 文件当中去。所以咱就上 github 搜了一下相关的轮子 generate sitemap,找到了现成的轮子 sitemapgen4j,项目的 README 中使用方法写的比较完善,这里不再多说。

源码地址:sitemapgen4j

上文提到了,如果超出了 5 万条需要写入另外一个 sitemap 当中,这个功能 sitemapgen4j 已经替我们实现了,无需担心。如果超出,生成的文件就像是这样的:

article1.xml
article2.xml
article3.xml
article4.xml
sitemap_index.xml

1、首先引入 sitemapgen4j 依赖

<dependency>
    <groupId>com.github.dfabulich</groupId>
    <artifactId>sitemapgen4j</artifactId>
    <version>1.1.1</version>
</dependency>

2、编写生成 sitemap 代码

需要准备的内容就是你网站中需要被搜索引擎抓取的url地址,具体的使用及生成代码可以参考:

public void generateSitemap() {
    String tempPath = "/home/seo";
    File file = new File(tempPath);
    if (!file.exists()) {
        file.mkdirs();
    }
    String domain = "https://www.mmzsblog.cn";
    try {
        WebSitemapGenerator g1 = WebSitemapGenerator.builder(domain, file)
                .fileNamePrefix("article").build();
        Date date = new Date();
        for (int i = 1; i < 21; i++) {
            WebSitemapUrl url = new WebSitemapUrl.Options(domain + "/article/" + i ).lastMod(date).build();
            g1.addUrl(url);
        }

        WebSitemapGenerator g2 = WebSitemapGenerator.builder(domain, file)
                .fileNamePrefix("issue").build();
        Date date2 = new Date();
        for (int i = 1; i < 21; i++) {
            WebSitemapUrl url = new WebSitemapUrl.Options(domain + "/issue/" + i ).lastMod(date2).build();
            g2.addUrl(url);
        }

        List<String> fileNames = new ArrayList<>();

        // 生成 sitemap 文件
        List<File> articleFiles = g1.write();
        articleFiles.forEach(e -> fileNames.add(e.getName()));
        List<File> issueFiles = g2.write();
        issueFiles.forEach(e -> fileNames.add(e.getName()));

        // 构造 sitemap_index 生成器
        W3CDateFormat dateFormat = new W3CDateFormat(W3CDateFormat.Pattern.DAY);
        SitemapIndexGenerator sitemapIndexGenerator = new SitemapIndexGenerator
                .Options(domain, new File(tempPath + "sitemap_index.xml"))
                .dateFormat(dateFormat)
                .autoValidate(true)
                .build();

        fileNames.forEach(e -> {
            try {
                // 组装 sitemap 文件 URL 地址
                sitemapIndexGenerator.addUrl(domain + "/" + e);
            } catch (MalformedURLException e1) {
                e1.printStackTrace();
            }
        });

        // 生成 sitemap_index 文件
        sitemapIndexGenerator.write();

    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
}

特别强调:因为百度这边规定一个sitemap文件包含的网址不得超过5万个,且文件大小不得超过10MB。所以如果你的sitemap超过了限制,可以将其拆分为几个小的sitemap,然后统一使用一个index.xml作为入口的sitemap,url的位置放其他的sitemap,这样百度也是可以索引到的。


标题:java使用sitemapgen4j生成网站的站点地图sitemap
作者:mmzsblog
地址:https://www.mmzsblog.cn/articles/2023/05/22/1684763371877.html

如未加特殊说明,文章均为原创,转载必须注明出处。均采用CC BY-SA 4.0 协议

本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!文章观点不代表本网站立场,如需处理请联系首页客服。
• 网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。
• 公众号转载请联系网站首页的微信号申请白名单!

个人微信公众号 ↓↓↓                 

微信搜一搜 Java 学习之道