C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)

news2024/9/30 23:28:06

要做SEO的肯定绕不开站点地图sitemap.xml。这玩意其实不难我也在搞写下来备忘一下也给新人指指路。

我先把代码放出来备忘下

 #region CreateSiteMapXml
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        [Route("/art/CreateSiteMapXml")]
        public JsonResult CreateSiteMapXml()
        {
            string currentXmlFileName = "sitemmap.xml";    
            string sitemapPath = _Environment.ContentRootPath;
            string sitemapFileFullNamePath=string.Format(sitemapPath+"/{0}", currentXmlFileName);
            var articleList = new ArticleAccess().FindArticleListForSitemap();  //获取需要生成sitemmap的数据

            XmlDocument xmlDoc = new XmlDocument();
            //加入XML的声明段落:<?xmlversion="1.0" encoding="utf-8"?>
            XmlDeclaration xmldecl = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
            xmlDoc.AppendChild(xmldecl);
            XmlElement xe = xmlDoc.CreateElement("urlset");//创建一个urlset根元素
            xmlDoc.AppendChild(xe);
            XmlNode root = xmlDoc.SelectSingleNode("urlset");//查找<urlset>
            foreach (var item in articleList)
            {
                var spriderUrl = string.Format("https://www.yadinghao.com/article/details/{0}.html", item.ARTICLE_CODE);
                XmlElement xe1 = xmlDoc.CreateElement("url"); //创建一个<api>节点 
                XmlElement xesub1 = xmlDoc.CreateElement("loc");
                xesub1.InnerText = spriderUrl;//此处拼接动态地址
                xe1.AppendChild(xesub1);
                XmlElement xesub2 = xmlDoc.CreateElement("lastmod");
                xesub2.InnerText = item.CREATEDATE.ToString("yyyy-MM-dd");
                xe1.AppendChild(xesub2);
                XmlElement xesub3 = xmlDoc.CreateElement("changefreq");     //是用来告诉搜索引擎网站更新的周期,描述的单词:“always”(经常) 、“hourly”(每时)、“daily”(每天)、“weekly”(每周)、“monthly”(每月)、“yearly”(每年)。像首页就可以用“always”;对于很久前的链接或不再更新内容的链接就可以使用“yearly”。
                xesub3.InnerText = "daily";
                xe1.AppendChild(xesub3);
                XmlElement xesub4 = xmlDoc.CreateElement("priority");
                xesub4.InnerText = "0.8";
                xe1.AppendChild(xesub4);
                root.AppendChild(xe1);
            }
            xmlDoc.Save(sitemapFileFullNamePath);    //此处放xml文件的保存地址
            return JsonResultRight();
        }
        #endregion

直接生成到网站根目录下了这个用了MVC的api

生成的xml文件

 

 


站点地图注意事项
使用一致且完全限定的网址。Google 会严格按照您列出的网址进行抓取。 例如,如果网站位于 https://www.example.com/,请勿将网址指定为 https://example.com/(缺少 www)或 ./mypage.html(相对网址)。
站点地图可以发布在网站上的任何位置,但是站点地图只影响父级目录中的下级目录。因此,如果站点地图发布在网站的根目录下,则可以影响网站上的所有文件,所以我们建议将站点地图发布在此目录下。
请勿在站点地图中包含网址的会话 ID。这样可以减少对这些网址的重复抓取。
使用 hreflang 注解将其他语言版本的网址告知 Google。
您必须对站点地图文件进行 UTF-8 编码,并且适当地对网址进行转义。
将较大的站点地图拆分成数个较小的站点地图:站点地图的网址数量上限为 50000 个,且压缩前的大小上限为 50MB。使用站点地图索引文件列出所有单个站点地图,然后将这个文件提交给 Google,而不是分别提交各个站点地图。
在站点地图中仅列出规范网址。如果您的网页有两个版本,则仅在站点地图中列出您希望在搜索结果中显示的版本。如果您有两个版本的网站(例如,www 和非 www),请确定您的首选网站,并将站点地图放入其中,然后在另一个网站上添加 rel=canonical 或重定向。
如果您为网页的移动版和桌面版提供了不同的网址,建议在站点地图中仅指向一个版本。但是,如果您认为需要同时指向这两个网址,请为网址添加注解,指明桌面版和移动版分别是哪个。
使用站点地图扩展功能指向视频、图片和新闻等其他媒体类型。
如果您针对不同语言或区域提供了其他版本的网页,可以在站点地图或 HTML 标记中使用 hreflang 指明其他版本的网址。
站点地图中的网址顺序不影响谷歌抓取。
非字母数字字符和非拉丁字符。 我们要求您的站点地图文件使用 UTF-8 编码。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows下安装启动nginx.exe报错

Windows下安装启动nginx.exe报错 前言&#xff1a; 问题1&#xff1a; 在安装使用nginx服务器时遇到最大的问题是windows下命令行输入start nginx后&#xff0c;或者双击nginx.exe&#xff0c;一闪而过&#xff0c;启动不了&#xff0c;怀疑是以下几个方面的问题&#xff0c;…

高效率工作之关于进入心流的方法

本文是向大家介绍高效率工作体验——心流&#xff01;心流也叫最优体验&#xff0c;是一位叫米哈里的心理学家在调查研究的基础上提出的概念。心流指的是一种将大脑注意力毫不费力地集中起来的状态&#xff0c;这种状态使人忘记时间的概念&#xff0c;忘掉自我&#xff0c;也忘…

商家必读!超店有数分享,tiktok达人营销变现如何更快一步?

近几年来&#xff0c;“粉丝经济”发展越来越迅猛&#xff0c;“网红带货”已经成为了一种营销的方式。这种方式让商家能基于达人的影响下迅速抢占自己的私域流量池。消费者会基于对达人的信任&#xff0c;购买达人推荐的产品。达人效应可以助力品牌走出营销困境。如果商家想要…

cmake 引入第三方库(头文件目录、库目录、库文件)

程序的编写需要用到头文件&#xff0c;程序的编译需要lib文件&#xff0c;程序的运行需要dll文件&#xff0c;因此cmake引入第三方库其实就是将include目录、lib目录、bin目录引入工程。 目录 1、find_package&#xff08;批量引入库文件和头文件&#xff09; 2、include_dir…

什么是禅道?禅道可以做什么?如何自动推送禅道消息?

什么是禅道&#xff1f;禅道是一款国产的开源项目管理软件。它的核心管理思想基于敏捷方法 scrum&#xff0c;内置了产品管理和项目管理&#xff0c;同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能&#xff0c;在一个软件中就可以将软件…

北京地铁口免费的大白鹅,你领了吗?

最近这几天&#xff0c;北京很多个地铁口周围涌现了许多只又白又肥的大鹅。 不过&#xff0c;此大鹅非铁锅之中的炖大鹅&#xff0c;乃是又呆又萌的大鹅玩偶。 而且&#xff0c;还是免费送的&#xff01; 所以每天晚上的下班时间&#xff0c;在一群掐着细长的大鹅脖子的地推人…

02:入门篇 - 漫谈 CTK

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 十万个为什么 五千个在哪里?七千个怎么办?十万个为什么?。。。生活中,有很多奥秘在等着我们去思考、揭示! 同样地,在使用 CTK 时,很多小伙伴一定也存在诸多疑问: 为什么 CTK Plugin Framework 要借…

计算机中有符号数的表示

文章目录二进制数制十进制二进制位模式基本数据类型无符号数的编码有符号数的编码原码&#xff08;Sign-Magnitude&#xff09;反码&#xff08;Ones Complement&#xff09;补码&#xff08;Twos Complement&#xff09;概念导读编码格式按权展开补码加法扩展一个数字的位表示…

基于STM32L431+Liteos的串口空闲中断加DMA循环接收

①MCU为STM32L431&#xff0c;使用串口2。 ②Liteos采用接管中断的方式。 STM32CubeMX配置生成串口代码&#xff1a; 串口DMA接收和发送配置区别是接收采用循环模式&#xff0c;发送为正常模式。 将生成的代码移植到liteos工程中&#xff0c;由于使用的接管中断的方式&#…

appium桌面版本以及一些自动化测试方方封装

标签&#xff08;空格分隔&#xff09;&#xff1a; appium_desktop 一 appium_desktop_v1.2.6 1.appium_desktop在github上最新下载地址&#xff1a;appium桌面版本地址 2.一路傻瓜式安装就好了&#xff1a; 3.然后点击搜索按钮&#xff08;右上角&#xff09; 三 inspector …

基于国产龙芯 CPU 的气井工业网关研究与设计(二)

3.1 系统硬件的总体设计 从硬件架构上&#xff0c;该 RTU 主要包括三大部分的设计&#xff1a; &#xff08;1&#xff09;外围电路设计&#xff1a;电源电路设计、RTC 电路设计和 EEPROM 电路设计。 &#xff08;2&#xff09;RTU 本体 I/O 端口设计&#xff1a;A/I 模拟量输入…

使用RedisDesktopManager无法连接Redis服务器问题

问题&#xff1a;解决办法问题1&#xff1a;redis的配置文件问题进入redis的目录 [rootredis ~]# cd /opt/apps/redis/ opt apps 是自己创建的文件夹&#xff08;用于安装redis&#xff09; 使用vim进入配置文件的修改 [rootredis redis]# vim redis.conf使用vim编辑器修改bi…

ERROR 1114 (HY000): The table ‘tt2‘ is full

insert 操作时提示is full 问题原因 rootlocalhost 11:55:41 [t]>show table status from t like ‘tt2’ \G ; *************************** 1. row *************************** Name: tt2 Engine: MEMORY Version: 10 Row_format: Fixed Rows: 7056 Avg_row_length: 944…

ASEMI代理FGH60N60SMD安森美ON原装原厂IGBT

编辑-Z 安森美FGH60N60SMD原厂IGBT参数&#xff1a; 型号&#xff1a;FGH60N60SMD 集电极到发射极电压&#xff08;VCES&#xff09;&#xff1a;600V 栅极到发射极电压&#xff08;VGES&#xff09;&#xff1a;20V 收集器电流&#xff08;IC&#xff09;&#xff1a;120…

纯css实现坤坤经典动作-“铁山靠”

背景 2023年2月16日&#xff0c;晴&#xff0c;今天没有工作&#xff0c;一直在掘金摸鱼&#xff0c;摸的我好累。 不行&#xff01;我得找点有意义的事情做&#xff01; 此时间&#xff0c;我发的一条沸点竟然有小黑子给我评论&#xff0c;\ 我看到之后气不打一处来&#xff…

1v1游戏互动,接入社交场景(内含接入方法)

游戏的需求洞察 许多互联网产品想要拓宽功能领域&#xff0c;纷纷选择进入小游戏赛道&#xff0c;试图从新颖有趣的方向深度触达用户&#xff0c;提高产品的活跃度和留存。群玩洞察了这一需求&#xff0c;还发现海外用户也对1v1互动游戏感兴趣&#xff0c;于是开始做这类游戏的…

中国人寿业务稳定性保障:“1+1+N” 落地生产全链路压测

引言 保险业务的数字化转型正如火如荼地进行&#xff0c;产品线上化、投保线上化、承保线上化、核保线上化等业务转型&#xff0c;导致系统的应用范围不断扩大&#xff0c;用户的高频访问也正在成为常态。同时&#xff0c;系统复杂性也呈指数上升&#xff0c;这些因素都增加了…

3.InfluxDB WEB使用

结合telegraf做指标数据收集 点击 Load Data -> Telegraf 配置界面 influxDB支持在WEB-UI中生成配置文件 然后利用telegraf通过远程URL请求的方式进行获取 点击CREATE CONFIGURATION 创建telegraf配置文件 选择Bucket InfluxDB提供了很多配置好的监控模板供用户选择 可以…

分享112个HTML旅游交通模板,总有一款适合您

分享112个HTML旅游交通模板&#xff0c;总有一款适合您 112个HTML旅游交通模板下载链接&#xff1a;https://pan.baidu.com/s/15OctJIB4NtyFddyalXX70A?pwd7tpa 提取码&#xff1a;7tpa Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 响应式旅游度假HTML5模板…

学会开发自己的Python AI应用【OpenAI API篇】

最近 OpenAI 宣布 ChatGPT 将很快推出他们的 API。虽然我们不知道这需要多长时间&#xff0c;但这之前我们可以熟悉下OpenAI API&#xff0c;快速开发自己的AI应用&#xff01;通过今天学习 OpenAI API&#xff0c;你将能够访问 OpenAI 的强大模型&#xff0c;例如用于自然语言…