RSS Feed 迁移的方案
由于政策的调整,目前很多博主都将博客域名从 .cn 迁出,相信很多朋友都会遇到 RSS Feed 迁移的问题。如果一直使用 Feedburner/Feedsky 这种第三方烧录网站管理订阅,只需要更换第三方抓取的源即可;但是如果之前订户多用 Wordpress 原始的源 example.cn/feed/、example.cn/?feed=rss2,或者使用自定的域名 feed.example.cn 的话,当域名迁移时,原来的 example.cn 被弃用后,订户就无法得到文章更新了。
我之前一直使用 feed.solrex.cn 作为 Feedsky 的自定义域名,因为我觉得 solrex.cn 可能比 feedsky.com 更长久,后来发现这是非常愚蠢的想法。当我把域名迁移到 .org 时,就面临 feed 迁移的问题。
最简单的方法是将原来的 feed url 重定向到 Feedburner/Feedsky,但这要求网站主必须仍然控制原来域名,那就没有更换域名的必要了。
或者使用一篇博客来通知订户更换 feed url,但是实践证明这种方法收效甚微。很多人(包括我)不会去看自己使用的是什么源,认为自己使用的就是正确的 feed url。
起初我是使用的直接重定向,但后来一封域名注册商的邮件,威胁如果不办理某些手续,24日之后会停止我的 .cn 域名解析。我想,还是用一些略显卑劣的手段通知大家更换订阅源吧。这种卑劣的方法是:如果使用原来的源订阅本站,就会看到每天一篇的“网站迁移通知”,直到用户更改订阅源,或者无法忍受直接删除 feed。
其技术实现方法是:使用 php 模仿 WP 的 rss 源生成一个 xml 文件,该文件只包含一篇文章,将原来的源指向它(或者 url 重定向到它)。该 xml 中的更新日期、文章 url 每天更新一次,这样阅读器就会认为博客有更新,把这篇文章抓取回去。我本以为阅读器是根据更新日期判断文章是否重复,后来发现是根据文章 url 来判断。为减少工作量,我们可以将文章的 url 指向某篇目标文章,然后在 url 后面加上 “?date=***”,这样阅读器就不会认为是同一篇文章,而且读者仍然能够点入目标文章。
方法很简单,如果您比较懒的话,可以参考我使用的文件(也可以从这里直接下载 php 源代码):
以下是代码片段:
<?php echo ’<?xml version="1.0" encoding="UTF-8"?>’."\n"; ?>
<?php echo ’<?xml-stylesheet type="text/xsl" media="screen" href="http://feeds.feedburner.com/~d/styles/rss2chinesetwfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?>’; ?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">
<channel>
<title>Solrex Shuffling</title>
<link>http://blog.solrex.org</link>
<description>Engineering a better life, programming a great future.</description>
<pubDate><?php echo date(’D, d M Y ’, strtotime("+7 hour")); echo ’00:00:00 GMT’; ?></pubDate>
<generator>http://wordpress.org/?v=2.7.1</generator>
<language>en</language>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<item>
<title>站点迁移通知-<?php echo date(’d M Y’, strtotime("+7 hour")); ?></title>
<link>http://blog.solrex.org/?p=638679&q=<?php echo date(’Ymd’, strtotime("+7 hour")); ?></link>
<comments>http://blog.solrex.org/?p=638679&q=<?php echo date(’Ymd’, strtotime("+7 hour")); ?>#comments</comments>
<pubDate><?php echo date(’D, d M Y ’, strtotime("+7 hour")); echo ’00:00:00 GMT’; ?></pubDate>
<dc:creator>Solrex Yang</dc:creator>
<guid isPermaLink="false">http://blog.solrex.org/?p=638679&q=<?php echo date(’Ymd’, strtotime("+7 hour")); ?></guid>
<description><![CDATA[您好,您之所以看到这篇文章是因为您仍在使用被遗弃的 feed 地址 http://feed.solrex.cn 订阅我的博客Solrex Shuffling。我已经将网站从 http://blog.solrex.cn 迁移到了 http://blog.solrex.org。由于 .cn 域名潜在被删除的危险,为了不丢失和您交流的渠道,我不得不出此下策以每天一篇博客的方式提醒您更新 feed 地址,希望您能谅解!...
]]></description>
<content:encoded><![CDATA[<p>您好,您之所以看到这篇文章是因为您仍在使用被遗弃的 feed 地址 http://feed.solrex.cn 订阅我的博客<a href="http://blog.solrex.org">Solrex Shuffling</a>。我已经将网站从 <a href="http://blog.solrex.org">http://blog.solrex.cn</a> 迁移到了 <a href="http://blog.solrex.org">http://blog.solrex.org</a>。由于 .cn 域名潜在被删除的危险,为了不丢失和您交流的渠道,我不得不出此下策以每天一篇博客的方式提醒您更新 feed 地址,希望您能谅解!</p>
<p>如果您觉得<a href="http://blog.solrex.org">本站</a>对您还有点儿用处,可以使用以下方式继续订阅:</p>
<ul>
<li><p>如果您使用离线阅读器,请将本站的 feed 地址 <a href="http://feeds.feedburner.com/solrex">http://feeds.feedburner.com/solrex</a> 或者 <a href="http://feed.feedsky.com/solrex">http://feed.feedsky.com/solrex</a> 添加到您的订阅器中,并删除现有这个 feed。</p></li>
<li><p>如果您使用在线阅读器,比如 Google Reader、抓虾 之类,您可以点击<a href="http://blog.solrex.org">这里</a>到本站首页,在右侧选择您的在线阅读器,重新订阅,并将现在这个 feed 删除。</p></li>
</ul>
<p>如果您觉得<a href="http://blog.solrex.org">本站</a>对您不再有用,可以使用以下方式退订:</p>
<ul>
<li><p>如果您使用离线阅读器,请咨询阅读器帮助如何删除 feed,一般情况下在 feed 上直接点 del 键即可。</p></li>
<li><p>Google Reader 用户可以在左侧 Subscriptions 中找到本 feed(一般名为 Solrex Shuffling),将鼠标移动至其上,您会发现右侧有一个向下的小箭头,点击箭头,您就会发现有 Unsubscribe 的选项;或者您也可以到右上角的 Setting 中,点入 Subscriptions 标签页,对所有 feed 进行管理时删除 Solrex Shuffling 这个 feed。您可以在<a href="http://www.google.com/support/reader/bin/answer.py?hl=zh_CN&answer=73062">这个页面</a>找到更多帮助。</p></li>
<li><p>抓虾用户可以在<a href="http://zhuaxia.com/help.php#3_3">这个页面</a>找到退订的帮助。</p></li>
<li><p>其它在线阅读器用户请咨询该网站帮助。</p></li>
</ul>
<p>无论如何,感谢您一直以来对本站的支持,我希望能在<a href="http://blog.solrex.org">新的站点</a>继续收到您的批评或支持!祝您好运!</p>
<p>Solrex Yang</p>
<p><?php echo date(’D, d M Y ’, strtotime("+7 hour")); ?></p>
]]></content:encoded>
<wfw:commentRss>http://blog.solrex.org/?p=638679&q=<?php echo date(’Ymd’, strtotime("+7 hour")); ?>/feed/ ?></wfw:commentRss>
</item>
</channel>
</rss>
您可以到 feed.solrex.cn 查看效果。
建议继续学习:
- 从Mysql到Sqlite的迁移 (阅读:4195)
- dell 2950 raid阵列冷迁移方法 (阅读:2198)
- 核心业务系统数据库平台迁移: Oracle -> MySQL (阅读:2199)
- XML/RSS的CDATA区段 (阅读:2066)
- 从大屏幕到小屏幕迁移的三种设计方案 (阅读:2058)
- xen虚拟机的迁移类型 (阅读:1902)
- AWR 与 Statspack 数据的导出与迁移 (阅读:1891)
- rss服务的一些优化 (阅读:1586)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Solrex Yang 来源: Solrex Shuffling
- 标签: RSS 迁移
- 发布时间:2010-03-05 13:40:47
- [42] IOS安全–浅谈关于IOS加固的几种方法
- [41] 界面设计速成
- [41] 图书馆的世界纪录
- [40] 如何拿下简短的域名
- [40] Oracle MTS模式下 进程地址与会话信
- [38] android 开发入门
- [37] 【社会化设计】自我(self)部分――欢迎区
- [36] 视觉调整-设计师 vs. 逻辑
- [35] 读书笔记-壹百度:百度十年千倍的29条法则
- [34] 程序员技术练级攻略