使 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/

15 条评论

  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. 感谢分享

  8. 请问,你的sitemap插件在哪里下的到,我使用最新版typecho,配合hanny的插件好像不生效

    1. 就是 Hanny 的插件哦。有没有禁用插件再启用呢?目前 Hanny 的博客好像打不开,等能访问我再试试。

发表评论»

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

表情