如何转谷歌XML Sitemaps到百度?

Bash

1 前言

最近WordPress安装“Google XML Sitemaps”插件,然而使用“百度资源搜索平台”提交却提示不接受Sitemaps索引列表,于是产生自己写脚本生成的想法。
关于“百度资源搜索平台”的操作菜单,详细如下,
https://ziyuan.baidu.com/linksubmit/index -> 单击【资源提交】-> 单击【sitemap】
关于本站的索引列表,详细请参阅如下链接,
https://www.cmdschool.org/sitemap.xml

2 最佳实践

2.1 创建处理脚本

mkdir ~/scripts/
vim ~/scripts/sitemap-baidu.sh

加入如下脚本,

#!/bin/bash

siteMapListPath=/tmp/sitemap-baidu.list
siteMapPath=/var/www/www.cmdschool.org/sitemap-baidu.xml

curl -s https://www.cmdschool.org/sitemap.xml | grep "loc" | grep ".xml" | sed -e "s/<loc>//g" -e "s/<\/loc>//g" -e "s/^[ \t]*//g" > $siteMapListPath
echo '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl"?>' > $siteMapPath
echo '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.siteMapPaths.org/schemas/siteMapPath/0.9 http://www.siteMapPaths.org/schemas/siteMapPath/0.9/siteMapPath.xsd" xmlns="http://www.siteMapPaths.org/schemas/siteMapPath/0.9"> ' >> $siteMapPath

for i in `cat $siteMapListPath`; do
curl -s $i | grep -v "?xml" | grep -v "urlset" | egrep "loc|lastmod|changefreq|priority" | sed -e "s/^[ \t]*<loc>/<url>\n\t\t<loc>/g" -e "s/<\/priority>/<\/priority>\n<\/url>/g" >> $siteMapPath
done
echo '</urlset>' >> $siteMapPath

2.2 添加计划任务自动更新

crontab -e

然后加入如下配置,

0 2 */1 * * sh  ~/scripts/sitemap-baidu.sh

2.3 测试转换的结果

使用谷歌浏览器输入如下链接浏览源代码,

view-source:https://www.cmdschool.org/sitemap-baidu.xml
没有评论

发表回复

Bash
如何压力测试邮件服务器?

1 前言 一个问题,一篇文章,一出故事。 最近生产环境的PostFis邮件服务器因为需要控制每分钟发 …

Bash
如何收集活跃的RHDS客户端IP地址?

1 前言 一个问题,一篇文章,一出故事。 笔者最近接到需要收集RHDS服务活跃的IP地址的工作任务, …

Bash
如何用Tigase监控postfix smtp服务?

1 前言 一个问题,一篇文章,一出故事。 笔者生产中的smtp服务器最近因为负载均衡器的路由故障而导 …