使 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 并不是让人类看的,而是让蜘蛛爬的,我认为那些修改操作就无必要啦。

全部为采集文章,文中的 联系方式 均不是 本人 的!

发表评论