使 Typecho 网站地图插件改用 sitemap.xml

Hanny 制作的 Sitemap 插件是 Typecho 中常备的搜索引擎插件。该插件能在接到访问请求时自动返回 xml 类型的站点地图。然而其默认地址是 /sitemap/,总感觉给人不舒服的感觉,于是就出现了改为 /sitemap.xml 的需求。

Typecho 中还有一款插件也叫 Sitemap。不同的是,它是缓存版的,有更新时在本地创建 sitemap.xml 文件,而非每次都动态生成。这个插件或许能满足这些人的需求;但我知道,不是每个人都想换用这款插件的。

温馨提示:本文有授人以渔的思想,但建议情急者直接往下滑倒方法小结部分。

首先我的第一想法是,要是存在一种方法不修改插件文件,就达到我想要的效果就好了。于是我果断采取了 .htaccess 地址重写,添加了如下规则:

RewriteEngine On
RewriteRule ^sitemap.xml$ /index.php/sitemap/ [L]

保存,看效果,失败!虽然语法看起来是正确的,但我着实不知道哪里出问题了。

这样看来,我们只好修改插件文件了。果断打开 /usr/plugins/Sitemap/ 目录,对下面两个文件下手。我目测 Action.php 中内容不需要改,而恰巧在 Plugin.php 中找到了“/sitemap/”,位于 31 行:

        Helper::addRoute('sitemap', '/sitemap/', 'Sitemap_Action', 'action');

再果断将 '/sitemap/' 改为 '/sitemap.xml',完毕。

但是访问 /sitemap.xml 仍然出现 404 错误,怎么回事呢?再一看改动的那一块,那是个插件激活方法,于是……重新激活插件啦。

让我们小结一下此问题的解决方法:

  1. 改 /usr/plugins/Sitemap/Plugin.php 文件第 31 行 '/sitemap/''/sitemap.xml'
  2. 重新激活插件(更推荐的方法是,最先就禁用插件,到这一步再激活插件)

没错,就这么简单。

这个需求是我看到 Typecho 开发交流群(群号:8110782)里一网友提出来的,特给以解决。但过程中此网友多次提到必须要改 Action.php 文件,我不明白怎么回事。事后,我在网上搜索了下(注,这点小问题我喜欢先自己动手),发现原来是 Sloger' Blog 的这篇文章误导了大家:实际后面那些代码的作用是,让 sitemap.xml 更加符合规范,更主要的是,给这个 XML 增加样式表(即让它变得好看)。考虑到 sitemap.xml 并不是让人类看的,而是让蜘蛛爬的,我认为那些修改操作就无必要啦。

若无特别说明,本文系原创,遵循 署名-非商业性使用 3.0 (CC BY-NC 3.0) 协议,转载文章请注明来自【闪星空间】,或链接上原文地址:http://shansing.com/read/379/

13 条评论

  1. 哎呀,菜鸟还在学习中吗,说的太明显了,好像我很本一样。

    1. 哎呀,绝对没有指出某人很笨的意思。如有表达不当,还请指出。

  2. 路过学习

  3. 昨天在群里看到你在帮别人鼓捣这个事情,原来还可以发成教程的哦.

    1. 别人没发,我就可以发嘛;别人写错了,我就可以纠正嘛。

  4. Google 直接支持FEED RSS网站地图。

    1. 嗯,是的。但是 Feed RSS 源通常不包含全站页面嘛,就是最新就若干篇文章的页面而已。

      1. 其实我都不在乎SEO这些东西的嘛。

  5. 你居然不用这个插件

    1. 我哪里说我没在用啦!

  6. 大侠,我想问一下,你能否解决typceho1.0正式版无法ajax评论的问题?

    以前0.9版的那一套不行了。。

    1. 目测 1.0 同样可以用 ajax 评论,你是不是换了模板或者改了插件什么的?

  7. 感谢分享

发表评论»

NO SPAMS! 不要发垃圾评论哦!

表情