网站地图有助于搜索引擎了解网站的结构等信息,有利于更好的抓取网站,本文记录为 DiscuzX 3.4 和 WordPress 添加网站地图的方法。
Contents
WordPress网站地图
可以直接使用 All in one SEO
插件。
DiscuzX网站地图
使用 bugx
开发的脚本,添加到后台计划任务。脚本见 Github,已修改为支持 PHP7 和 DiscuzX 3.4。
然后设置 rewrite 规则,让子目录中的 Sitemap XML 文件能以根目录形式访问到。需要注意的是,DiscuzX 的 nginx rewrite 规则中有以下指令:
if (!-e $request_filename) {
return 404;
}
因此,Sitemap 的 rewrite 规则应在 DiscuzX 的 rewrite 之前添加:
rewrite ^/(forum|group|home|portal)_sitemap\.xml /sitemap/$1_sitemap.xml last;
rewrite ^/([a-z]+)_sitemap_([0-9]+)\.xml /sitemap/$1_sitemap_$2.xml last;
之后在将 Sitemap 链接加到 robots.txt 中:
Sitemap: https://论坛域名/forum_sitemap.xml
Sitemap: https://群组域名/group_sitemap.xml
Sitemap: https://家园域名/home_sitemap.xml
Sitemap: https://门户域名/portal_sitemap.xml
提交网站地图到搜索引擎
网站地图生成之后,可以主动提交给搜索引擎。WordPress 只需要提交 /sitemap.xml
,DiscuzX Sitemap 脚本生成了 4 个 XML,都需要提交。以下是谷歌和百度的 Sitemap 提交方法。
通过 Google Search Console 提交。
百度
通过 百度搜索资源平台 提交。
网站地图相关问题
网站地图是什么
站点地图是一种文件,您可以在其中提供与您网站中的网页、视频或其他文件有关的信息,还可以说明这些内容之间的关系。Google 等搜索引擎会读取此文件,以便更加智能地抓取您的网站。站点地图会告诉 Google 您认为网站中的哪些网页和文件比较重要,还会提供与这些文件有关的重要信息:以网页为例,这些信息包括网页上次更新的时间、网页更改的频率,以及网页是否有其他语言版本。
如果您网站上的网页链接得当,那么 Google 通常能够发现其中的大多数网页。即便如此,站点地图仍有助于我们更加高效地抓取规模更大、更复杂的网站或更特殊的文件。
由于 Google 是依靠复杂的算法安排抓取流程的,因此,使用站点地图并不能保证 Google 能抓取站点地图中的所有内容并将其编入索引。但在大多数情况下,您的网站都会因使用站点地图而受益,而绝不会受损。
来自谷歌 Search Console 帮助
网站地图多久更新一次
Google 并非每次抓取网站时都会查看站点地图。我们仅在首次发现站点地图时查看;之后仅在您使用 ping 功能通知我们站点地图有变更时查看。请仅在新建或更新站点地图时向 Google 发送站点地图相关提醒。如果站点地图无任何变更,请勿多次向我们提交或 ping 站点地图。
来自谷歌 Search Console 帮助
看起来似乎不需要频繁更新 Sitemap。 目前 WordPress Sitemap 由插件控制,新文章发布后就会更新 Sitemap. DiscuzX 通过计划任务,一天更新一次。
robots.txt中指定Sitemap
将站点地图提供给 Google,方法有两种:将其添加到 robots.txt 文件中,或者将其直接提交给 Search Console。
来自谷歌 Search Console 帮助
看起来 robots.txt 中只是让搜索引擎自动找到 Sitemap 的一种方法,如果手动提交了,不写也是可以的。
网站地图为什么要放根目录
站点地图可以发布在网站上的任何位置,但是站点地图只影响父级目录中的下级目录。因此,如果站点地图发布在网站的根目录下,则可以影响网站上的所有文件,所以我们建议将站点地图发布在此目录下。
来自谷歌 Search Console 帮助
第二步,将Sitemap文件放置在网站目录下。比如您的网站为example.com,您已制作了一个sitemap_example.xml的Sitemap文件,将sitemap_example.xml上传至网站根目录即example.com/sitemap_example.xml
来自 百度搜索资源平台 帮助
The location of a Sitemap file determines the set of URLs that can be included in that Sitemap. A Sitemap file located at http://example.com/catalog/sitemap.xml can include any URLs starting with http://example.com/catalog/ but can not include URLs starting with http://example.com/images/.
https://www.sitemaps.org/protocol.html#location
百度和谷歌都说要放在 根目录,但是我一开始不知道这个规则时用了子目录提交,也都没有报错,已发现的网址数量 也正常。为了避免麻烦,还是遵守这个规定,用 Nginx rewrite 重写子目录的链接。
其他方案
可以使用百度自动推送代码。
自动推送 JS 代码是百度站长平台最新推出的轻量级链接提交组件,站长只需将自动推送的 JS 代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。
<script>
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https'){
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else{
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
WordPress 可以编辑模板加入,DiscuzX 可以在后台 第三方统计代码 里加入,或者用插件,在 global_footer
里加入。
参考资料
1. https://support.google.com/webmasters/answer/156184?hl=zh-Hans
2. https://support.google.com/webmasters/answer/183668?hl=zh-Hans
3. https://ziyuan.baidu.com/college/courseinfo?id=267&page=2#04
在github的脚本已被作者删除