Java生成sitemap网站地图

news/2024/5/9 3:36:04/文章来源:https://blog.csdn.net/weixin_33724659/article/details/93511562

访问我的博客

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(domain + "/" + 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/10162037.html

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

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

相关文章

好域名怎么选?总结15名网站大佬给我的8条建议!(精华)...

写网站上线的文章中提到需要有域名&#xff0c;本来是想在百度里搜一篇“选域名方面”的文章链接过去就好&#xff0c;但是看了好几篇&#xff0c;讲的都太笼统了&#xff0c;看完不知所云&#xff0c;一看就是“互相借鉴”的文章。所以我问了身边的几十位大佬&#xff0c;让他…

网站分析实战--如何以数据驱动决策,提升网站价值(大数据时代的分析利器)...

《网站分析实战--如何以数据驱动决策&#xff0c;提升网站价值》&#xff08;大数据时代的分析利器&#xff09;基本信息作者&#xff1a; 王彦平 吴盛峰 出版社&#xff1a;电子工业出版社ISBN&#xff1a;9787121193125上架时间&#xff1a;2013-1-10出版日期&#xff1a;201…

nginx首登网站数量市占宝座 挑战Apache地位

网络资安公司Netcraft释出2019年4月的网页服务器调查结果&#xff0c;发现nginx成为网站数量市占率第一名。Netcraft在四月收集了14亿网站的回应&#xff0c;其中包括了2.3亿个不重复网域&#xff0c;以及接近900万台的网页用计算机。比起三月的调查&#xff0c;Netcraft可以取…

网站推荐:一路收藏的正能量网站

我喜欢的教育、学习、在线阅读网站 [网易公开课] 在土豆网上可以搜索到海量的公开课视频&#xff0c;iTunes也是&#xff0c;里面可以找到很多公开课&#xff0c;比如我随意搜索的一些&#xff0c;在iTunes里面有一个University部分&#xff0c;里面有太多资源&#xff0c;不赘…

textarea 手机端无法换行_北易信息:企业如何做好移动端网站seo关键词优化

如今移动互联网已经是越来越重要&#xff0c;移动网络发展也是越来越快速&#xff0c;人们都离不开了手机。企业的推广也从PC端转移到了移动端&#xff0c;但是做过推广的企业都知道PC端和移动端是不互通的&#xff0c;所以企业想做好移动端的网站优化是有难度的&#xff0c;移…

直接访问静态图片_网站设计:关于axure原型预览文件访问慢的原因

一、背景最近发现原来的原型预览访问速度超级慢&#xff0c;这一切貌似是最近调整了下Axure原型中的几个元件&#xff0c;上传之后&#xff0c;原本访问超级快的文件&#xff0c;变的超级超级慢。 二、原因分析过程 1、首先直接从服务器角度找原因。自认为服务器可能是宽带不够…

国微大学php,国微CMS学校网站系统(学校版) v20191205

国微CMS学校网站系统是一个以phpMySQL进行开发的学校网站系统。国微CMS学校网站系统特点&#xff1a;系统体系化&#xff1a;模块化体系&#xff1a;所有功能均已系统化、模块化、插件化&#xff0c;如CMS、问答、广告、标签。用户体系&#xff1a; 不仅区分企业、个人&#xf…

子页面调父页面方法_南康网站制作_网站专题页面的SEO优化方法

发布时间:2021-01-04 07:01:35网站专题页面具有连贯性和丰富性&#xff0c;连贯性和丰富性是影响SEO的关键。也就是说&#xff0c;具有一定质量的特殊页面的排名概率会更高。控制一些网站特殊页面的SEO优化模式&#xff0c;并使用将排名视为特殊主题的关键词进行排名&#xff0…

php网页连mysql_PHP网站连接mysql

展开全部1.PHP与MySQL的连接有三种API接口&#xff0c;e68a843231313335323631343130323136353331333363393132分别是&#xff1a;PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) &#xff0c;下面针对以上三种连接方式做下总结&#xff0c;以备在不同场景下选出最优方案…

html ajax 请求_SEO中正确使用AJAX技术提高网站排名的注意事项

许多网站站长发现了利用AJAX改善其网站的用户体验的优势&#xff0c;它可以创建动态网页作为强大的网络应用。但是就像Flash一样&#xff0c;如果没有正确使用该技术&#xff0c;AJAX会使搜索引擎难以将网站编入索引库&#xff0c;让搜索用户找到。什么是Ajax&#xff1f;Ajax(…

c# webbrowser打开网站 获得网站html,c# winform 打开网页(基于WebBrowser)

【实例简介】c# winform 打开网页【实例截图】【核心代码】//System.Diagnostics.Process.Start("http://www.qq.com");//连接string url "http://www.qq.com";//定义脚本string script "function openUrl(url){window.open(url,测试窗口,width400p…

正则看这三个网站就够了

正则最好的 Regex正则表达式在线测试生成工具 - MKLab在线工具 正则表达式语法教程&#xff08;含在线测试工具&#xff09;-头条-PHP中文网 正则表达式 - 在线工具 - OKTools Regex正则表达式在线测试生成工具 - MKLab在线工具 (133条消息) 正则表达式 看完这些就够了_李白-…

python利用requests自定义user-agent爬取网站

前一段写了一个爬取墨迹天气的小爬虫&#xff0c;今天突然发现不能用了&#xff0c;因为是墨迹天气&#xff0c;反爬机制应该没有那么严格&#xff0c;应该解决一下user-agent的问题就可以了&#xff0c;写这篇博客&#xff0c;说一下requests的自定义user-agent的方式。首先登…

大型网站架构之分布式消息队列

大型网站架构之分布式消息队列 以下是消息队列以下的大纲&#xff0c;本文主要介绍消息队列概述&#xff0c;消息队列应用场景和消息中间件示例&#xff08;电商&#xff0c;日志系统&#xff09;。 本次分享大纲 消息队列概述消息队列应用场景消息中间件示例JMS消息服务常用…

网站备案地点选择_香港免备案服务器适合哪些行业租用?

香港服务器免备案吗&#xff1f;由于中国实行的是一国两制&#xff0c;中国香港作为特别行政区&#xff0c;和内地的一些政策不相同&#xff0c;内地相关部门规定网站需要备案&#xff0c;而它是不涉及香港特别行政区的&#xff0c;所以香港没有规定网站需要备案&#xff0c;因…

网页设计 尺寸 html5,网页设计一般至少设置多少高度?制作网站时网页的尺寸是多少?网页的屏幕尺寸是多少?...

网页设计一般至少设置多少高度?制作网站时&#xff0c;网页的尺寸是多少?可以让各种用户看到。网页的屏幕尺寸是多少?下面就和小编一起来看看吧!网页设计一般至少设置多少高度?大致高度如下:WindowXP的靠前个屏幕大小580pxWindow7的靠前个屏幕大小710px的具体原因如下:网页…

网站建设技术方案_b2c网站建设方案怎么做?

随着做b2c商城网站的商家越来越多&#xff0c;很多企业也开始转型向线上电商发展。在做网上商城开发之前&#xff0c;首先要做好b2c网站建设方案&#xff0c;那么b2c网站建设方案怎么做呢?具体就一起跟HiShop移动云商城小编来了解一下。b2c网站建设方案怎么做?1、了解用户需求…

使用网站模板快速建站_教你用懒人建站素材快速生成一个网站

当个人不懂代码&#xff0c;不懂设计&#xff0c;也没有太多时间和资金的时候&#xff0c;如何搭建一个功能比较完善的网站呢&#xff1f;对于新手来说&#xff0c;比较方便的方法是使用自助建站系统&#xff0c;通常这些建站系统都会自带网页建站素材&#xff0c;你不用做太多…

电子邮件服务器的ip地址_网站建设选择什么服务器?

很多企业在建设网站时&#xff0c;很纠结于服务器的选择。他们不知道FTP是更好还是独立主机&#xff0c;因为服务器的质量对网站非常重要。一般的web服务器分为四种类型&#xff1a;虚拟主机、VPS、云主机、独立主机。1、 虚拟主机虚拟主机是在网络服务器上划分一定数量的磁盘空…

python学习网站_国外顶级程序员都在用的Python编程网站

程序员书库(ID&#xff1a;CodingBook) 猿妹编译链接&#xff1a;https://medium.com/for-self-taught-developers/10-best-tutorials-for-python-today-badc8428b950每个程序员都有自己的学习方式&#xff0c;我认为编程学习不仅要看视频教程&#xff0c;而且还要阅读和学习文…