Java生成sitemap网站地图

news/2024/5/10 11:36:42/文章来源:https://blog.csdn.net/weixin_34132768/article/details/93098853

访问我的博客

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_740872.aspx

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

相关文章

解决ASP.NET网站发布问题

目录 前言 开始 aspx.cs文件放到单独的类库项目 一个可选择勾选页面的发布工具&#xff1a;LimusicAddin 前言 Asp.net 发布分为&#xff1a;动态编译和预编译。预编译又分为&#xff1a;In Place Pre-compilation 和 Pre-compilation for Deployment。关于asp.net编译&#xf…

弊端重重的传统影楼,优兔家摄影网站赋予新生机

关键词&#xff1a;网站建设&#xff0c;H5响应式网站&#xff0c;摄影网站建设 关于优兔家 U2&#xff08;优兔家&#xff09;新派视觉摄影&#xff0c;由资深广告创意人主理&#xff0c;是一个善于挖掘个人美态的摄影团体&#xff0c;为用户提供状容造型、专业摄影、后期润饰…

html amp css自学网站,HTMLamp;CSS——网站注册页面,

HTML&CSS——网站注册页面&#xff0c;1、表单标签所有需要提交到服务器端的表单项必须使用括起来&#xff01;form 标签属性&#xff1a; action,整个表单提交的位置(可以是一个页面&#xff0c;也可以是一个后台 java 代码)method,表单提交的方式(get/post/delete……等…

HTTrack - 克隆任意网站

HTTrack可以克隆指定网站&#xff0d;把整个网站下载到本地。 可以用在离线浏览上&#xff0c;也可以用来收集信息&#xff08;甚至有网站使用隐藏的密码文件&#xff09;。 一些仿真度极高的伪网站&#xff08;为了骗取用户密码&#xff09;&#xff0c;也是使用类似工具做的。…

第13节 IIS之WEB服务器—用于发布网站

IIS之WEB网站发布服务器0 引言1 WEB服务器相关概念2 部署WEB服务器—以win2003为例2.1 安装WEB服务器软件2.2 发布静态网站2.3 发布动态网站3 一台服务器发布多个web网站—以win2003为例3.1 方法1&#xff1a;增加多个IP地址3.2 方法2&#xff1a;设置不同端口号3.3 方法3&…

iframe嵌入其他网站,如何自适应高度

终于有一周时间&#xff0c;工作不那么忙了&#xff0c;腾出手来总结下工作过程中学到的知识。 每天遇到新问题&#xff0c;解决新问题&#xff0c;但是却很少有时间去仔细研究下&#xff0c;或者总结下。攒的多了&#xff0c;就得从头捋一遍。 说下iframe自适应高度&#xff1…

【Linux系统】第13节 CentOS系统中采用Apache发布网站以及访问控制配置详解

目录1 CentOS系统中Apache的安装1.1 安装前检查1.2 配置IP地址1.3 安装及检查2 主页建立与编辑3 Apache主配置文件分析4 访问控制设定4.1 客户机地址限制4.1.1 客户机地址限制原理4.1.2 客户机地址限制示例14.1.3 客户机地址限制示例24.2 用户授权限制5 归纳参考文章1 CentOS系…

【(SQL+HTML+PHP)综合】一个简单论坛网站的综合开发案例(具有用户注册、登录、注销、修改信息、留言等功能)

目录1 实验环境2 网站页面功能规划2.1 论坛首页2.2 个人中心2.3 实现留言功能2.4 数据库及连接数据库3 实验阶段一&#xff1a;实现注册、登录、注销和更新头像等功能3.1 数据库3.2 论坛首页./index.php3.3 个人中心注册页面./member/register.php3.4 接收来自注册页面的表单数…

【蚁剑工具-01】网站管理工具之中国蚁剑安装过程详解以及应用实例

目录1 中国蚁剑安装及设置1.1 下载1.2 安装1.3 相关设置2 中国蚁剑应用实例2.1 操作环境2.2 具体步骤3 总结参考文章任何人不得将其用于非法用途以及盈利等目的&#xff0c;也禁止未经允许私自修改打包进行发布&#xff0c;否则后果自行承担并将追究其相关责任&#xff01;中国…

【文件包含漏洞-04】经典面试题:已知某网站仅存在本地文件包含漏洞时,如何GetShell?

目录1 实验介绍2 实验环境3 实验步骤3.1 包含日志文件getshell拓展4 总结1 实验介绍 实验要求&#xff1a;假设攻击者已经知道某网站存在且仅存在本地文件包含漏洞&#xff0c;并且没有文件上传漏洞点及其他漏洞&#xff0c;如何GetShell。 实验目的&#xff1a;利用本地文件包…

php记录网站访问,PHP简单实现记录网站访问量功能示例

本文实例讲述了PHP简单实现记录网站访问量功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;tongji/index.php文件&#xff1a; $file dirname(__FILE__)./tongji.db; //$data unserialize(file_get_contents($file)); $fpfopen($file,r); $content; if (flock($f…

PHP毕业设计旅游网站,基于PHP旅游网站的开发与设计(含录像)

基于旅游网站的开发与设计(含录像)(程序代码,数据库,毕业论文25000字)随着Internet的普及&#xff0c;越来越多的企业建立了自己的WWW网站&#xff0c;电子商务应时而生。本论文主要讨论如何建立一个简单的旅游电子商务网站。本网站主要包括4大系统&#xff1a;注册模块&#x…

如何实现ASP.NET中网站访问量的统计

如何实现ASP.NET中网站访问量的统计 2009-07-30 15:50 佚名 网翼教程网 字号&#xff1a;T | T本文介绍了如何在asp.net中进行网站访问量的统计。 AD&#xff1a;51CTO 网 第十二期沙龙&#xff1a;大话数据之美_如何用数据驱动用户体验 下面介绍如何进行ASP.NET中网站访问量的…

css ico图标不显示,网站后台ico图标不显示的解决方法

文汇软件小编在进行霖可改版项目时&#xff0c;完成中文站后创建了英文站点&#xff0c;将英文站点的配置域名改为了英文站的域名&#xff0c;但是进入英文站后台时&#xff0c;网站的ico图标都不显示了&#xff0c;通过审查代码得知ico图标文件地址还是中文站的地址&#xff0…

asp IIS网站的配置(Win7下启用IIS7配置ASP运行环境)

其实win7下的IIS7配置过程是非常简单的。下面让seo博客来详细的介绍一下win7下配置IIS7环境运行ASP网站的方法&#xff0c;以供初接触者参考第一次在windows7下配置IIS&#xff0c;虽然有丰富的xp下配置IIS的经验&#xff0c;但还是会遇到不少的问题。特别是对入门者来说&#…

来了解并防范一下CSRF攻击提高网站安全

看一下我从网上找的原理图&#xff0c;结合举例描述&#xff0c;多看一遍你就知道怎么回事了。 CSRF是什么呢&#xff1f;CSRF全名是Cross-site request forgery&#xff0c;是一种对网站的恶意利用&#xff0c;CSRF比XSS更具危险性。想要深入理解CSRF的攻击特性我们有必要了解…

web程序设计asp.net实用网站开发源码_新网站开发要选择哪种数据库?这几种类型,你需要了解...

来自网易号&#xff0c;作者&#xff0c;云计算那点事在如今的互联网大背景下&#xff0c;网站开发成为了一个大热门&#xff0c;而网站开发离不开数据库的支持。对于开发人员来说&#xff0c;数据库日渐成为IT管理人员的得力助手。简单来讲&#xff0c;数据库(DataBase)就是一…

如何维护关键字_【品牌优化】网站品牌如何优化,效果怎样

点击上方蓝字关注我吧&#xff01;建立网站品牌并非一夜之间就能形成的&#xff0c;它需要日积月累的口碑、服务、品质等一点点积累。而且网站品牌相当于一个行走在互联网上的符号&#xff0c;有了它可以让更多的消费者加深认识&#xff0c;对企业的发展起到至关重要的作用。那…

linux下lnmp域名绑定,lnmp安装ngnix配置多域名或多个网站

ngnix 配置默认情况下&#xff0c;ngnix下域名的绑定都是通过ngnix.conf文件来配置的&#xff0c;但是有时候我们有多个域名或子域名的情况下要怎么绑定呢&#xff1f;或者有子域名指定不同的目录的时候我们又应该怎么设置呢&#xff1f; 其实很简单&#xff0c;以下就以我的网…

tdk怎么设置_网站不收录应该怎么办,这几招是最好的解决

今年从3月份开始&#xff0c;做网站运营的站长朋友都发现&#xff0c;收录变慢了&#xff0c;然后逐渐不收录了。遇到问题后&#xff0c;我们要做的不是在这里怨天尤人&#xff0c;而是第一时间去发现问题&#xff0c;从而找到解决的办法。今天&#xff0c;冬镜就和大家一起来聊…