使用了无效的ssl证书,feedburner无法抓取feed的解决方法

始终割舍不下https,虽然它会多消耗一些资源,但毕竟可以让网站免于某些风暴,不过M.zdpress提出了一个我没有注意到的问题,feedburner无法抓取feed了,试了一下,果然:

Feedburner retrieve https feed using self-signed ssl error

可以看出错误的原因是使用了无效的证书(当然无效,同时猜测fb使用的是Java),从证书这边着手看来是没希望了,只能换其他的方式。

前端时间在GFans里听到过可以用Google Reader实现类似feed重烧或转发的功能,遂想用这个来试一试。

首先在GR中订阅自己的feed,然后给它打上一个tag(标签),也有的地方叫folder(目录),都一样,注意tag名最好唯一、专用,不要和其他的重复,比如我就直接用blog名作标签名称。GR不像FB,证书无效也没有关系。

然后在Settings->Tags中找到这个标签,点后面的广播图标,private就变成了public,后面的链接也随之出现了:

Share a tag in google reader

在后面的几个链接中点email a link,填上自己的邮箱,发送,会收到一封信,里面有两个链接:

• View my shared items
• Subscribe to a feed of my shared items

使用其中第二行的链接,形式类似:

https://www.google.com/reader/public/atom/user/12175931868835525338/label/Fwolf%27s%20Blog

这个地址打开基本就是你原来feed的原貌!只是多了GR的一些附加信息,比如Blog标题从Fwolf's Blog变成了"Fwolf's Blog" via Fwolf in Google Reader、文章标题后来多出了个时间,我觉得这些是可以接受的,文章的内容基本不走样。

最重要的是,这个地址虽然也是https的,但它的证书是Google用于GR的,是有效的,是FB承认的,所以在FB中修改你原来的种子,把这个地址设置为Original Feed,FB就可以正常更新了。

回顾一下,其实道理很简单,就是用GR“重烧”了一个种子,转发给FB而已。至于Blog程序自带的feed地址就不用再说了吧,其他feed阅读网站也可以使用同样的方式达到目的。

最后,感谢妖精的提示,嘿嘿。

如何为网站添加sitemap文件

什么是sitemap?简单的说,就是一个xml文件,定义了你网站“主要栏目”的结构,以方便搜索引擎更好的建立索引和抓取文件。是对一些从其他页面不怎么链接得到的页面尤其有用,更详细的信息可以查阅Wikipedia上的说明

Google是支持sitemap的,Google帮助中的How do I create a Sitemap file?一文列举了一些生成sitemap的方式和工具,我采取的是第一种——sitemap protocol方式,详细说明在这里,英文好的朋友可以直接去啃,不用看我在下面罗嗦了。

第一步,准备工作

由于Google Sitemap Generator是使用python语言编写的,所以需要python 2.2以上的版本支持,其余的要求如要有文件的访问权等等不再详述。由于我的操作系统是Ubuntu,所以python支持也没问题。

http://www.sourceforge.net/project/showfiles.php?group_id=137793&package_id=153422下载Google Sitemap Generator的程序文件,在本机建一个目录把它解压缩。

第二步,创建配置文件

把刚才解压缩得到的example_config.xml文件另存为config.xml,并编辑之:

<site base_url=”http://www.example.com/” store_into=”/var/www/docroot/sitemap.xml.gz” verbose=”1″ >

其中base_url是网站地址,store_into是sitemap文件的地址,最好使用绝对路径,于是上面的内容修改为:

<site base_url=”http://www.fwolf.com/” store_into=”/home/fwolf/sitemap.xml.gz” verbose=”1″ >

接下来修改** MODIFY or DELETE **开头的sitemap生成方式定义部分,要删除掉不打算使用的生成方式,按照xml语法标签来分,生成方式有以下几种:

  • url,网页地址,附加定义为最后修改时间,更新周期,优先级,个人认为这种方式比较麻烦。
  • urllist,通过一个包含网页地址列表的文件,可以定义文件优先级,个人认为这种方式还不如直接使用urllist文件省事。
  • directory,文件地址,附加定义为文件、对应网址、默认索引页,个人认为这种方式比较适合我们,因为在本机一般都会有一套比较完整的网站文件,用他们来生成sitemap再合适不过了。
  • accesslog,网站日志文件,有必要么?
  • sitemap,sitemap节点文件,主要用于把多个分散的sitemap文件集合起来。

在这里我们删除掉其他的方式,只保留directory方式,并对其进行修改,结果如下:

<directory path=”/home/fwolf/website” url=”http://www.fwolf.com/” default_file=”index.html” /> <directory path=”/home/fwolf/website/wordpress” url=”http://www.fwolf.com/blog” default_file=”index.php” /> <directory path=”/home/fwolf/website/bnt” url=”http://www.fwolf.com/bnt” default_file=”index.php” /> <directory path=”/home/fwolf/website/dokuwiki” url=”http://www.fwolf.com/dokuwiki” default_file=”index.php” />

注意一般简单的网站只要有一个directory就可以了,但也可以有多个directory段,仅当你的网站是用子目录来划分栏目,也就是对应到本机不一定放在一个目录下调试的情况下才建议使用。可以用default_file来定义首页文件。

接下来修改FILTERS段,索引文件过滤部分。过滤规则是自上而下匹配的,匹配动作action有两种drop和pass,drop明确不索引文件,pass则是索引文件(但也有可能被后面的规则排除),匹配规则type可以是wildcard或者regexp,wildcard是使用通配符*和?来匹配文件,regexp自然就是正则表达式了。注意默认的匹配动作是drop不索引文件,所以要想简单的索引所有文件,这一段留空就可以了。

<filter action=”drop” type=”wildcard” pattern=”*/cert/*” />

这里我只简单的屏蔽掉信息产业部备案文件保存的那个目录,注意pattern是要和完整的网址进行匹配,略微不同于apache conf文件中的rewrite规则写法。

第三步,运行Google Sitemap Generator

很简单,./sitemap_gen.py –config=config.xml 就可以了,生成的sitemap文件会保存在刚才定义的store_into目录中,要想解压缩查看的话,用gunzip -d sitemap.xml.gz解开就可以了。一定要仔细查看这个sitemap文件,并根据它的内容,再去修改config.xml,反复直到满意为止。

最后,登录Google Webmaster Tools提交你的sitemap文件即可。

Google Sitemap Generator生成的sitemap文件中还是存在很多不必要的文件的,比如dokuwiki和wordpress的源文件、说明文档有上千个,手工和用FILTERS来去除我觉得都不是很方便, 所以再介绍一种更简单的添加sitemap的方式,就是纯文本文件,例如:

http://www.fwolf.com/ http://www.fwolf.com/blog/ http://www.fwolf.com/bnt/ http://www.fwolf.com/dokuwiki/

上述内容保存为sitemap.txt,然后上传到网站根目录,就可以到Google Webmaster Tools里面提交了,使用地址http://www.fwolf.com/sitemap.txt,注意每行一个网址,不能有其他任何内容,最好放在网站的根目录下。相对于使用Google Sitemap Generator生成sitemap.xml来说,我觉得这种纯文本文件的方式更简单、实用,包含的内容也更容易控制,应该更适合小型网站使用。

Update @ 2008-07-10

推荐一个不错的WordPress插件,用来管理和生成Sitemap:Google (XML) Sitemaps Generator for WordPress,我现在也在用它。