Java生成sitemap网站地图

news/2024/5/12 16:32:19/文章来源:https://blog.csdn.net/weixin_34234823/article/details/94127584

sitemap 是什么?对应没有接触过网站 SEO 的同学可能不知道,这里引用一下百度站长的一段解释。

Sitemap(即站点地图)就是您网站上各网页的列表。创建并提交Sitemap有助于百度发现并了解您网站上的所有网页。您还可以使用Sitemap提供有关您网站的其他信息,如上次更新日期、Sitemap文件的更新频率等,供百度Spider参考

简单来说,sitemap 就是搜索引擎爬虫便于爬取到网站内的所有网页。

SEO之初

之前特意通过 site 指令查询过公司同行业网站的收录情况,发现搜索引擎对于我司的网站收录数量真的不是差了一星半点-.-,原因嘛,就是一直没有专门的人做 SEO 优化工作。

前几个月我倒是生成了网站的一部分 sitemap 提交到神马搜索站长平台,但是明明是按照官方文档格式生成的,却一直提示格式不对,也不知道什么情况,也没有官方反馈渠道,就不了了之了。最近公司新招了 SEO 专员,于是便有了定时生成 sitemap 文件的需求。这种生成的文件一般都是对外直接可以访问的,可以通过 nginx 配置静态资源文件来完成。

需求探讨

sitemap 的格式一般是 XML 格式的,第一反应就是可以使用 DOM4J 来完成,但是做 SEO 的同事说了,因为 sitemap 文件的限制,同一个 sitemap 文件最多有 5 万条 URL,超出 5 万条,就应该放入到下一个 sitemap 文件当中去。通过 DOM4J 来做的话,还需要判断条数感觉有点麻烦(懒),就上 gayhub 搜了一下相关的轮子 generate sitemap,找到了现成的轮子 sitemapgen4j,项目的 README 中使用方法写的比较完善,这里不再多说。

为什么文档很完善的情况下,我要写这篇博客呢?(10月第一篇,凑数的(逃~)

上文提到了,如果超出了 5 万条需要写入另外一个 sitemap 当中,这个功能 sitemapgen4j 已经替我们实现了,无需担心。如果超出,生成的文件就像是这样的:

- article1.xml
- article2.xml
- article3.xml
- article4.xml

这样的话,在站长平台这里,如果新增了文件就要新增一条sitemap 网址记录,很麻烦。

2018102115401243528566.png

好在,搜索引擎考虑到了这种问题,有相应的解决方法。

20181021154012451648209.png

我们把每次生成的 sitemap 文件的地址,添加到一个 sitemap 索引文件当中去,这样,我们只需要向平台提交一个 sitemap 索引文件的地址即可。

不多说,代码见。

生成 sitemap 文件

首先引入 sitemapgen4j 依赖

<dependency><groupId>com.github.dfabulich</groupId><artifactId>sitemapgen4j</artifactId><version>1.1.1</version>
</dependency>

编写生成 sitemap 代码

public void generateSitemap() {String tempPath = "/home/seo";//String tempPath = System.getProperty("java.io.tmpdir") + File.separator + "/seo/";File file = new File(tempPath);if (!file.exists()) {file.mkdirs();}String domain = "https://www.domain.com";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(tempPath + e);} catch (MalformedURLException e1) {e1.printStackTrace();}});// 生成 sitemap_index 文件sitemapIndexGenerator.write();} catch (MalformedURLException e) {e.printStackTrace();}
}

通过 Nginx 提供给外部访问

文件已经生成了,就需要对外提供访问了,这里使用 nginx 来实现,如果用 apache 也是可以的。

上文生成的文件我放在了 /home/seo 目录下,文件有

- seo- article1.xml- article2.xml- article3.xml- article4.xml- sitemap_index.xml

现在修改 nginx 配置文件,这里说明一下,因为 sitemap 生成一份就可以了,但是要通过域名能直接访问到,所以需要在 nginx 跳转一下到有 sitemap 文件的服务器。

存放 sitemap 文件的 nginx 配置如下

server {listen          8888;server_name     111.112.113.114;charset utf8;access_log logs/access.log  main;location / {alias /home/seo/;sendfile on;autoindex on;autoindex_exact_size off;autoindex_localtime on;}
}

根域名的 nginx 配置文件

server {listen          80;server_name     www.domain.com;charset utf8;access_log logs/access.log  main;location /seo/ {proxy_pass http://111.112.113.114:8888;}location / {proxy_pass http://homeServer;}
}

注意: 第一个 location块 中的 proxy_pass 行尾有个 /

www.domain.com/seo/sitemap_index.xml
就会在 www.domain.com 这里直接反代到 111.112.113.114 这台服务器上了。

站长平台只用提交这一个 URL www.domain.com/seo/sitemap_index.xml 即可。

有疑问?

欢迎来信,给我写信

转载于:https://www.cnblogs.com/vcmq/p/9966662.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_770388.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

28.分析采集美团网站信息-2

28.分析采集美团网站信息-2 接着昨天的思路&#xff0c;继续分析&#xff0c;要想获取信息&#xff0c;就要抓获xhr中js请求。如图&#xff1a; 1.明显可以看的出request url 是由若干参数拼接而成。2._token 参数很显而易见 是个重要的请求参数&#xff0c;而且在一段时间内是…

网站实时镜像

问题 公司的网站服务器有两个镜像站点&#xff0c;分别放在北京和上海的IDC机房。现在要求利用rsync同步机制实现“服务器A–>服务器B”的实时镜像同步。 需要完成的配置任务如下&#xff1a; 1)双方的目录均为 /var/www/html/ 2)以 svr5 为同步发起方&#xff0c;配置 in…

LINUX 配置httpd网站服务

问题 默认安装的httpd服务并未指定域名&#xff0c;因此启动服务时会出现“httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName”的异常信息&#xff0c;本例中要求将Web网站的名称设置为svr5.tedu.cn。 另外&am…

LINUX 网站实时镜像

问题 公司的网站服务器有两个镜像站点&#xff0c;分别放在北京和上海的IDC机房。现在要求利用rsync同步机制实现“服务器A–>服务器B”的实时镜像同步。 需要完成的配置任务如下&#xff1a; 1)双方的目录均为 /var/www/html/ 2)以 svr5 为同步发起方&#xff0c;配置 inot…

网站性能优化有哪些方法

网站性能优化有哪些方法 一、总结 一句话总结&#xff1a; web前端性能优化&#xff1a;浏览器访问优化、CDN加速、反向代理 应用服务器性能优化&#xff1a;分布式缓存、异步操作、使用集群、代码优化 web前端性能优化方法有哪些1. 浏览器访问优化&#xff1a;减少http请求&am…

php 实时监测网站是否异常_导轨式智能电表COUNTISE02电量监测型

导轨式智能电表COUNTISE02电量监测型导轨式智能电表COUNTISE02电量监测型导轨式智能电表COUNTISE02电量监测型江苏舜高智能科技有限公司(Synchro Intelligent)致力于为用户端能效管理和用电、设备运维的系统解决方案&#xff0c;帮助用户实现能源的可视化管理&#xff0c;能源数…

rsync+rsync同步和网站实时镜像

2.rsyncrsync同步 采用rsyncSSH的远程同步时&#xff0c;使用起来是最简单的&#xff0c;但是目标用户也被允许SSH登录到远程主机的Shell环境。在某些情况下&#xff0c;企业会希望只提供需要认证的同步目录资源&#xff0c;但并不希望提供远程登录&#xff0c;这时候就可以采…

一个网站大概多少钱_做一个医疗网站需要多少钱?

相信很多医疗从业者对于互联网的的需求无非就是关注网站设计的价格。但是如果真有这样的网站设计公司没有了解医疗行业就去给你们报价的话&#xff0c;那么这样的公司做的网站更多的会不契合医疗企业。所以真的想知道做一个医疗行业网站设计需要多少钱&#xff0c;那么就需要去…

php网站 被 黑_10.3期玉落清盘作者:枸杞黑乌龙+不二选择作者:仲希

全世界只有不到3 % 的人关注了 壹号书单你真的真的很了不起文末卡片求姐妹们点一下呀&#xff0c;点进去退出就好&#xff0c;不用下载不用关注&#xff0c;不麻烦哒~非常感谢啦~- 2020.10.03 -今日新文《玉落清盘》作者&#xff1a;枸杞黑乌龙原文地址&#xff1a;http://www.…

长尾词推广系统推荐乐云seo_SEO优化应该怎么布局关键词?怎样做效果更好?

在移动互联网发展面前&#xff0c;各行各业的发展都是非常激烈&#xff0c;所以为了让自己在网络平台上获得较好的人流量及较好的转化&#xff0c;很多企业都会寻找好的方法实现企业的曝光。而SEO目前是大多数企业采取的有效方法之一&#xff0c;它是能一种引擎搜索自然获得网站…

php域名下载,php域名授权源码_网站授权系统下载

源码介绍安装说明&#xff1a;php域名授权源码_验证域名IP双重验证盗版追踪 完整可用就是一款php验证系统&#xff0c;谁用谁知道&#xff0c;某站很多人卖的都缺少关键的验证文件&#xff0c;没有验证文件还要验证系统吗&#xff1f;详细安装见附件说明文档。授权中心相关tzhu…

beast软件linux用法,网络设置及启动引导项 - 黑苹果驱动高手篇 MultiBeast用法进阶_Linux教程_Linux公社-Linux系统门户网站...

网络设置项Network即网络设置项&#xff0c;包含几款主流的板载网卡驱动包&#xff0c;选择一项就行。▲网络设置项以下为各选项含义&#xff1a;Lnx2Macs RealtekRTL81xx Ethernet&#xff1a;选择此项将打开Lnx2Mac的 Realtek 81xx 以太网控制器驱动安装程序&#xff0c;将安…

本地服务器缓存网站文件,本地服务器缓存

本地服务器缓存 内容精选换一换对于磁盘增强型弹性云服务器&#xff0c;可使用本地盘和云硬盘两类磁盘存储数据。本地盘常用于存放用户的业务数据&#xff0c;磁盘吞吐量更高。由于磁盘增强型弹性云服务器不支持规格变更&#xff0c;因此&#xff0c;当本地盘容量不足时&#x…

java 快排_干货文章!揭秘seo快排原理

小编点评&#xff1a;快排的目的就是有排名&#xff0c;有排名就有流量&#xff0c;在如今流量为王的时代有流量就有价值&#xff0c;不过每个站都有自己的定位和方向&#xff0c;获取流量的方式也各不相同&#xff0c;适合自己的路子更重要!众所周知&#xff0c;最近几年互联网…

网页配色网站

网站的配色方案决定了访问者对网站的第一印象&#xff0c;有很多工具可以帮助选择合适的配色方案&#xff0c;本文为网站设计者介绍五款免费的优秀网站配色方案工具。1. KulerKuler是一款倍受专业网页设计人员喜爱的工具&#xff0c;它在配色方案中增加了社会化媒体和网络因素…

金昌搜索引擎优化网络推广_Seo优化和网络推广有什么区别?

SEO优化通过SEO和基于搜索引擎的营销思想&#xff0c;提供了一种生态化的自我营销解决方案&#xff0c;使网站在业界得到更多的曝光&#xff0c;获得更大的品牌影响力和单场访谈。如果只从SEO的角度看&#xff0c;想在没有网站的情况下实施SEO&#xff0c;那就是空谈。但从目前…

互联网网站的反爬虫策略浅析--转载

今天路上时间有点长&#xff0c;路上看了一篇robbin一篇很早的博客&#xff0c;觉得不错&#xff0c;扩展了视野&#xff0c;总结一把&#xff0c;顺便转载呵呵。 防止爬虫干扰正常访问的方法&#xff1a; 1、监控TCP连接&#xff08;netstat查看80的端口&#xff09;&#xff…

c语言鼠标捕获非阻塞函数,亚虎777怎么样 -官方网站

模型视图很多时候我们都会忘记Linux root 用户的口令,下面就教大家如果忘记root口令怎么办 第1步:开机后在内核上按"e".截图如下 按e以后会进入内核启动页面,如下图 第2步:在linux16这行的后面输入"rd.break consoletty0"然后按"ctrlx"如下图 第…

优化网站性能必备的6种架构方案

前言 一个成熟的大型网站&#xff08;如淘宝、天猫、腾讯等&#xff09;的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的&#xff0c;它是随着用户量的增加&#xff0c;业务功能的扩展逐渐演变完善的&#xff0c;在这个过程中&#xff0c;开发模式、技…

浅谈Web网站架构演变过程

前言 我们以javaweb为例&#xff0c;来搭建一个简单的电商系统&#xff0c;看看这个系统可以如何一步步演变。 该系统具备的功能&#xff1a; 用户模块&#xff1a;用户注册和管理 商品模块&#xff1a;商品展示和管理 交易模块&#xff1a;创建交易和管理 阶段一、单机构建网站…