作者:残城碎梦 围观群众:672 更新于 标签:seorobotssitemap
最近做了自己的blog网站。seo优化是自己建站必会遇到的问题。这次主要讲的是robots.txt文件与sitemap.xml文件。以及spring boot jar 包项目如何让搜索引擎通过url来查看到这个文件。
robots.txt文件是搜索引擎访问网站第一个要查看的文件。通过robots.txt文件搜索引擎可以确定哪些链接是搜索引擎可以访问的。哪些链接是不希望搜索引擎访问的。甚至可以告知允许哪些搜索引擎访问网站。相当于网站与搜索引擎之间的协议。在搜索引擎找到robots.txt文件后会以robots.txt来确定访问的范围。如果没有robots.txt文件。搜索引擎默认全部页面都是可以访问的。下面是我自己网站的robots.txt文件
User-agent: *
Disallow:/api/
Disallow:/hapi/
Crawl-delay: 5
Sitemap: https://www.jhone.top/sitemap.xml
因为我自己的项目是spring boot 打的jar包。访问服务器上的文件是十分麻烦的。所以在这里整理了一下spring boot jar包项目可以如何配置 robots.txt 与 sitemap.xml
package controller;
/** * @author zzy * @date 2021/3/30 11:46 */
@Controller
@RequestMapping("/")
public class SeoController{
/** * robots.txt 文件 * @param response */
@GetMapping("/robots.txt")
public void robots(HttpServletResponse response){
String sitemapUrl = domain + "/sitemap.xml";
try {
Writer writer = response.getWriter();
String lineSeparator = System.getProperty("line.separator", "\n");
writer.append("User-agent: *").append(lineSeparator);
writer.append("Disallow:/api/").append(lineSeparator);
writer.append("Disallow:/hapi/").append(lineSeparator);
writer.append("Crawl-delay: 5").append(lineSeparator);
writer.append("Sitemap: "+sitemapUrl);
} catch (IOException e) {
e.printStackTrace();
}
}
}
一看名就知道一个网站地图。是xml格式的。sitemap.xml文件的作用就是告知搜索引擎。这个网站有哪些网站是想要被收录的赶紧来收录我把。sitemap.xml文件中会包含一些链接的最新修改时间。网页的重要程度等。
sitemap.xml这个文件具有同样的问题。就是今天写了篇文章。明天上传了个资源。总不能每次都要重新打jar包这样也太麻烦了。下面是动态查询生成xml的方法。
引入依赖
<!-- sitemap -->
<dependency>
<groupId>com.github.dfabulich</groupId>
<artifactId>sitemapgen4j</artifactId>
<version>1.0.6</version>
</dependency>
controller层代码。
@GetMapping("/sitemap.xml")
public void sitemapXml(HttpServletResponse response){
response.setContentType(MediaType.APPLICATION_XML_VALUE);
Writer writer = null;
try {
writer = response.getWriter();
String xml = seoHandler.createSiteMapXmlContent();
writer.append(xml);
} catch (IOException e) {
e.printStackTrace();
}
}
handler层代码
@Value("${blog.domain}") //域名。
private String domain;
public String createSiteMapXmlContent(){
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
WebSitemapGenerator wsg = null;
try {
wsg = new WebSitemapGenerator(domain);
// 首页 url
WebSitemapUrl url = new WebSitemapUrl.Options(domain)
.lastMod(dateTimeFormatter.format(LocalDateTime.now())).priority(1.0).changeFreq(ChangeFreq.DAILY).build();
wsg.addUrl(url);
// 顶部菜单的url
List<Menu> menuList = menuService.queryAll();
for(Menu menu : menuList){
WebSitemapUrl menuUrl = new WebSitemapUrl.Options(domain + menu.getLink())
.lastMod(dateTimeFormatter.format(LocalDateTime.now())).priority(1.0).changeFreq(ChangeFreq.DAILY).build();
wsg.addUrl(menuUrl);
}
// 分类的url
List<Category> categoryList = categoryService.queryAll();
for(Category category : categoryList){
WebSitemapUrl categoryUrl = new WebSitemapUrl.Options(domain+"/category/"+category.getId())
.lastMod(dateTimeFormatter.format(LocalDateTime.now())).priority(0.9).changeFreq(ChangeFreq.DAILY).build();
wsg.addUrl(categoryUrl);
}
// 标签的url
List<Label> labelList = labelService.queryAll();
for(Label label : labelList){
WebSitemapUrl categoryUrl = new WebSitemapUrl.Options(domain+"/label/"+label.getId())
.lastMod(dateTimeFormatter.format(LocalDateTime.now())).priority(0.9).changeFreq(ChangeFreq.DAILY).build();
wsg.addUrl(categoryUrl);
}
// 文章的url
List<ArticleVo> articleList = articleService.queryAll();
for(ArticleVo articleVo: articleList){
WebSitemapUrl categoryUrl = new WebSitemapUrl.Options(domain+"/read/"+articleVo.getId())
.lastMod(dateTimeFormatter.format(LocalDateTime.now())).priority(1.0).changeFreq(ChangeFreq.DAILY).build();
wsg.addUrl(categoryUrl);
}
// 资源的url
List<Ziyuan> ziyuanList =ziyuanService.queryAll();
for(Ziyuan ziyuan : ziyuanList){
WebSitemapUrl categoryUrl = new WebSitemapUrl.Options(domain+"/ziyuan/"+ziyuan.getId())
.lastMod(dateTimeFormatter.format(LocalDateTime.now())).priority(1.0).changeFreq(ChangeFreq.DAILY).build();
wsg.addUrl(categoryUrl);
}
} catch (Exception e) {
logger.error("create sitemap xml error:", e);
}
return String.join("", wsg.writeAsStrings());
}
最后欢迎大家访问我的个人博客网站:www.jhone.top