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 并不是让人类看的,而是让蜘蛛爬的,我认为那些修改操作就无必要啦。
哎呀,菜鸟还在学习中吗,说的太明显了,好像我很本一样。
哎呀,绝对没有指出某人很笨的意思。如有表达不当,还请指出。
路过学习
昨天在群里看到你在帮别人鼓捣这个事情,原来还可以发成教程的哦.
别人没发,我就可以发嘛;别人写错了,我就可以纠正嘛。
Google 直接支持FEED RSS网站地图。
嗯,是的。但是 Feed RSS 源通常不包含全站页面嘛,就是最新就若干篇文章的页面而已。
其实我都不在乎SEO这些东西的嘛。
你居然不用这个插件
我哪里说我没在用啦!
大侠,我想问一下,你能否解决typceho1.0正式版无法ajax评论的问题?
以前0.9版的那一套不行了。。
目测 1.0 同样可以用 ajax 评论,你是不是换了模板或者改了插件什么的?
感谢分享
请问,你的sitemap插件在哪里下的到,我使用最新版typecho,配合hanny的插件好像不生效
就是 Hanny 的插件哦。有没有禁用插件再启用呢?目前 Hanny 的博客好像打不开,等能访问我再试试。