原创

seo优化之robots.txt 与 sitemap.xml

作者:残城碎梦 围观群众:662 更新于 标签:seorobotssitemap

简介

最近做了自己的blog网站。seo优化是自己建站必会遇到的问题。这次主要讲的是robots.txt文件与sitemap.xml文件。以及spring boot jar 包项目如何让搜索引擎通过url来查看到这个文件。

robots.txt

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();
        }
    }

    
}

sitemap.xml文件

一看名就知道一个网站地图。是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

加入收藏