什么是站点地图?可以看看百度百科的解释:https://baike.baidu.com/item/%E7%AB%99%E7%82%B9%E5%9C%B0%E5%9B%BE/9991876?fr=aladdin
简单理解就是:一个按照指定规则生成的xml文件,用于指引搜索引擎的爬虫去爬取索引你的网站。
生成网站sitemap的方法有很多,这里我使用的是sitemapgen4j这个第三方jar包。老规矩现在maven中引入依赖:
<dependency>
<groupId>com.github.dfabulich</groupId>
<artifactId>sitemapgen4j</artifactId>
<version>1.1.1</version>
</dependency>
需要准备的内容就是你网站中需要被搜索引擎抓取的url地址,具体的使用及生成代码可以参考:
/**
* 站点地图
*/
public class SitemapTest {
/**
* 日期格式化
*/
private static final W3CDateFormat DATE_FORMAT = new W3CDateFormat(W3CDateFormat.Pattern.DAY);
/**
* 网站域名
*/
private static final String DOMAIN = "http://www.3kkg.com/";
public static void main(String[] args) {
try {
//获取sitemap的文件存放路径(这里测试使用直接使用临时文件夹)
File sitemapDir = new File(FileUtil.getTmpDirPath() + File.separator + "sitemap");
if (sitemapDir.exists()) {
//空文件夹
FileUtil.clean(sitemapDir);
}else{
//新建文件夹
sitemapDir.mkdir();
}
//创建generator,通过generator生成站点地图
WebSitemapGenerator generator = WebSitemapGenerator.builder(DOMAIN, sitemapDir)
.fileNamePrefix("index")
.dateFormat(DATE_FORMAT)
.build();
//新建一个网页地址,有多少个网页就在这里新建多少个WebSitemapUrl对象
//options这里填网页的url地址,lastMod填写网页最后一次修改时间
String indexUrl = DOMAIN + "index.html";
WebSitemapUrl indexSitemap = new WebSitemapUrl.Options(indexUrl).lastMod(new Date()).build();
String url1 = DOMAIN + "1.html";
WebSitemapUrl sitemap1 = new WebSitemapUrl.Options(url1).lastMod(new Date()).build();
//将网页地址添加到generator
generator.addUrl(indexSitemap);
generator.addUrl(url1);
//生成站点地图文件
generator.write();
} catch (Exception e) {
e.printStackTrace();
}
}
}
因为百度这边规定一个sitemap文件包含的网址不得超过5万个,且文件大小不得超过10MB。所以如果你的sitemap超过了限制,可以将其拆分为几个小的sitemap,然后统一使用一个index.xml作为入口的sitemap,url的位置放其他的sitemap,这样百度也是可以索引到的。
本站的sitemap地址(仅供参考):/sitemap/index.xml