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 错误,怎么回事呢?再一看改动的那一块,那是个插件激活方法,于是……重新激活插件啦。
让我们小结一下此问题的解决方法:
- 改 /usr/plugins/Sitemap/Plugin.php 文件第 31 行
'/sitemap/'
为'/sitemap.xml'
; - 重新激活插件(更推荐的方法是,最先就禁用插件,到这一步再激活插件)。
没错,就这么简单。
这个需求是我看到 Typecho 开发交流群(群号:8110782)里一网友提出来的,特给以解决。但过程中此网友多次提到必须要改 Action.php 文件,我不明白怎么回事。事后,我在网上搜索了下(注,这点小问题我喜欢先自己动手),发现原来是 Sloger' Blog 的这篇文章误导了大家:实际后面那些代码的作用是,让 sitemap.xml 更加符合规范,更主要的是,给这个 XML 增加样式表(即让它变得好看)。考虑到 sitemap.xml 并不是让人类看的,而是让蜘蛛爬的,我认为那些修改操作就无必要啦。