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