一、背景
SEO 应该是每个站长都会接触到的一个环节,其中 Sitemap 就是网站 SEO 中的一环。在近期,我将网站从 Wordpress 搬到了 Typecho 上,就在做到 Sitemap 这一环时,插件安装、启用都没有任何报错,但就是在执行访问验证时死活显示不出来(个别主题可能会跳转到 404 页面,如: Handsome 主题)。
为了搞定这个 sitemap.xml 可显示,弄到次日凌晨 4 点也没搞定,真是一把心酸一把泪...,次日醒来,再次处理,经过分析终于找到了头绪,并最终解决。
下面就将我的整个分析及处理过程分享给大家,希望各位Typecho站长少走弯路。
二、环境交代
- Typecho 版本: 最新开发版 - 版本号:6558fd5e030a950335d53038f82728b06ad6c32d
- Typecho 主题: Handsome
- Typecho 插件: Google Sitemap 生成器
- 站点域名:wuqintai.com & www.wuqintai.com
- 协 议:全站 HTTPS
三、异常现象
安装并启用 Sitemap 插件:
在浏览器地址栏访问:http://你的网站域名/sitemap.xml
查看 Sitemap 工作情况:
可见什么都没有,一片空白...
注意:也有可能会跳转到 404 页面。
四、问题剖析
接下来用程序员思维走一波...
空白的页面真的是什么都没有吗?答案:不一定,也许是你要的答案已经处理好并请求到本地了,但缺少了某些东西没有显示出来。
如何验证?
第一步: 在 Linux 平台,使用 curl 命令工具请求页面,看看实际返回的内容。
可见实际上是有数据的,所以从这可以判断,上面的空白页可能是因为浏览器在请求 sitemap.xml
这个页面资源时缺少了某些东西,而导致最终没将数据展示出来。
接下来就验证...
第二步: 打开 Chrome 浏览器,按 F12 进入开发者模式,定位到 Network 栏,再次触发请求 sitemap.xml 资源:
可见在这个请求中,共触发获取2个文件,总 Status
字段可知,第一个文件请求成功了,第二步请求失败了。从第二个文件后缀可知,它是一个样式文件,在这里,它的作用就是将 sitemap.xml 文件中的数据进行格式化并在浏览器上展现出来,它的请求失败,也就导致了数据没发展现出来,所以我们在浏览器上啥也没看到。
接着,我们可以点击 sitemap.xml 文件,再次验证其内容是否被获取到:
可见数据是有被获取到本地的。
知道大致问题了,那怎么去处理呢?
因为我不是这方面的开发人员,所以浏览器中提示的错误代码及如何针对性的去处理,这个我也不太懂。
为了获得更多的信息,我的做法是,再开一个浏览器(Safari),看看请求情况:
从上述信息可知,在 sitemap.xml
文件中嵌套了一个 sitemap.xls
的请求,而这个请求在实际中失败了,Safari 给出了失败的原因,大致意思是:加载 sitemap.xls
文件失败,要求请求的 域名、协议、端口等信息 需与 sitemap.xml
的一致。
知道错误原因后,回过来排查一下,其实不难发现,两个文件在请求 url 上确实是存在差异的,如下:
接下来就是尝试解决问题了,既然是URL不一样,那我给请求 sitemap.xml
补充一个 www.
不就行了吗,说干就干,来看看效果:
可见问题已解决。
注意:这个 www.
需要根据你实际情况调整,如果你用的是其它二级域名,请根据实际情况调整(测试:使用二级域名不存在这个问题)。
五、问题解决
知道问题所在了,接下来解决就好办了,方法有如下几种:
第一种:直接使用带 www.
方式访问,在各大搜索引擎上提交时,直接提交正确、可访问的、带 www.
的 sitemap.xml 链接即可!
第二种:修改后台站点地址, 操作:设置
--> 基本
--> 站点地址
,修改为不带 www.
的链接。
第三种:在 Nginx 中设置,将所有请求从定向到带 www
的域名上。(过程稍复杂,操作略)
第四种:到 Sitemap 目录下找到 sitemap.xls 文件,将上述请求的 url 代码屏蔽,直接忽略格式化。(毕竟这是给搜索蜘蛛看的,只要蜘蛛能理解就行,平时我们很少看。)
第五种:Bug修复,如果你是大神,请直接修复这个问题,万分感谢!
六、小结
排查和修改故障的过程是痛苦的,特别是什么都不懂的情况下。如果排查了很久也无果,请停下来,休息一下,说不定下次归来就有头绪,问题就迎刃而解了呢...
关于这个问题,个人猜测如果你使用的是二级域名,在使用Sitemap这个插件时,应该不会有这个问题,但实际还待验证。本人就验证了,如果你恰巧是这种情况,可在评论区提交你的使用。
好了,就这样吧,不逼逼了,累...
最后提醒:教程请勿生搬,应结合实际情况,适当调整。