如何转谷歌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
如何自动重启Tomcat异常的服务?

1 前言 一个问题,一篇文章,一出故事。 笔者几天前发现Tomcat会因为一个错误而停止服务,虽然进 …

Bash
如何自动挂载目录?

1 前言 一个问题,一篇文章,一出故事。 笔者需要写一个脚本定时挂载目录,但是AutoFS测试过骨兼 …

Bash
如何熟悉shell if?

1 基础知识 1.1 命令使用格式 1.2.1 获取命令帮助 man if 1.2.2 基本判断用法 …