seo优化---robots.txt 和 sitemap.xml文件生成

548 阅读1分钟

robots.txt

robots.txt文件是搜索引擎访问网站第一个要查看的文件。通过robots.txt文件搜索引擎可以确定哪些链接是搜索引擎可以访问的。哪些链接是不希望搜索引擎访问的。甚至可以告知允许哪些搜索引擎访问网站。相当于网站与搜索引擎之间的协议。在搜索引擎找到robots.txt文件后会以robots.txt来确定访问的范围。如果没有robots.txt文件。搜索引擎默认全部页面都是可以访问的。

```package controller;

@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这个文件具有同样的问题。

<!-- sitemap -->
 <dependency>
     <groupId>com.github.dfabulich</groupId>
     <artifactId>sitemapgen4j</artifactId>
     <version>1.1.1</version>
 </dependency>
@GetMapping("/sitemap.xml")
    public void sitemapXml(HttpServletResponse response){
        response.setContentType(MediaType.APPLICATION_XML_VALUE);
        Writer writer = null;
        try {
            writer = response.getWriter();
            String xml = seoHandler.createSiteMapXml();
            writer.append(xml);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
@Value("${url}") //域名。
private String url;
public String createSiteMapXml(){
        WebSitemapGenerator wsg = null;
        try {wsg = new WebSitemapGenerator(domain);
            // 首页 url
            WebSitemapUrl url = new WebSitemapUrl.Options(domain)
                    .lastMod(DateUtils.format(new Date())).priority(1.0).changeFreq(ChangeFreq.DAILY).build();
            wsg.addUrl(url);

            // 文章的url
            LambdaQueryWrapper<Article> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(Article::getIfDelete, Constant.NOT_DEL);
            wrapper.ne(Article::getReleaseStage, ReleaseStageEnum.UNPUBLISHED.getCode());
            List<Article> articleList = articleMapper.selectList(wrapper);
            for(Article article: articleList){
                ArticleInfo articleInfo = articleInfoMapper.selectById(article.getId());
                WebSitemapUrl categoryUrl = new WebSitemapUrl.Options(domain+"/article/"+article.getDoi())
                        .lastMod(DateUtils.format(articleInfo.getPubTime())).priority(1.0).changeFreq(ChangeFreq.DAILY).build();
                wsg.addUrl(categoryUrl);
            }
        } catch (Exception e) {
            log.error("create sitemap xml error:", e);
        }
        return String.join("", wsg.writeAsStrings());

    }