话说micolog 301 网址重定向


问题1:

话说去年的好多文章被伟大的G.F.W阻挡之国门外,导致访问ip迅速下降。幸好只屏蔽了部分网址,没用k掉域名,这要感谢我们伟大自由的祖国。

应对:更改被墙文章网址,并301到新网址。以对搜索引擎转移文章权重。

搭建micolog这篇文章为例。这篇文章据我判断当时被墙时属于连带,“不安全”的文章我已经“主动”删除了!

被墙的网址是:http://www.houkai.com/?p=3003  (请勿访问,会导致本博客几十秒内无法访问)

修改后的网址是 http://www.houkai.com/2009/06/18/gae-micolog.html 

下面将前者301到后者。

在blog.py里class SinglePost(BasePublicPage)类中 def get(self,slug=None,postid=None)方法下 添加如下代码:

if self.request.headers["Host"] ==’www.houkai.com’ and postid ==3003:
    self.redirect("http://www.houkai.com/2009/06/18/gae-micolog.html")
    return self.response.set_status(301)

另外:被墙的 http://www.houkai.com/soft 301到 http://www.houkai.com/share 代码如下:

if self.request.headers["Host"] ==’www.houkai.com’ and slug ==’soft’:
    self.redirect("http://www.houkai.com/share")
    return self.response.set_status(301)

也可以这样if postid ==3003: 和 if slug ==’soft’:  测试时,可以用个小点postid值。

问题2:

话说 去年用了kangzj的独立ip的反向代理之后,众多童鞋以为这是ghs,纷纷cname或A记录到本博客的ip,造成了一网站多域名的情况,当时反向链接迅速下降,幸好我在每篇日志的最后都附上了绝对链接地址,从而搜索引擎将其他网站内容判断为副本,慢慢的 反向链接数量上来了。但这样,还会对本博客博文的权重降低,所以今日决定将其他网址301到本域名

方法:来源于Qing的这篇文章

1.首页转向。在blog.py文件class MainPage的get方法 添加如下(红色部分)

class MainPage(BasePublicPage):

    def get(self,page=0):

        if self.request.headers["Host"] != ‘www.houkai.com’: 
           self.redirect(http://www.houkai.com/)
           return self.response.set_status(301)

2.页面和文章转向。在blog.py文件class SinglePost的get方法 添加如下(红色部分)放404前。

class SinglePost(BasePublicPage):
    @cache()
    def get(self,slug=None,postid=None):

        if postid:
            entries = Entry.all().filter("published =", True).filter(‘post_id =’, postid).fetch(1)
        else:
            slug=urldecode(slug)
            entries = Entry.all().filter("published =", True).filter(‘link =’, slug).fetch(1)

        if postid ==3003:
            self.redirect("http://www.houkai.com/2009/06/18/gae-micolog.html")
            return self.response.set_status(301)

        if slug ==’soft’:
            self.redirect("http://www.houkai.com/share")
            return self.response.set_status(301)

        if self.request.headers["Host"] != ‘www.houkai.com’:
            if postid:
               self.redirect("http://www.houkai.com/?p="+str(postid))
            else:
               self.redirect("http://www.houkai.com/"+slug)
            return self.response.set_status(301)

        if not entries or len(entries) == 0:
            return self.error(404)

以上也可以用self.redirect("……..", True) 一个函数代替self.redirect("…….."+slug) 和self.response.set_status(301)两个函数。

建议用notepad++显示空格和制表符进行编辑。注意:网址加了http://。测试时可先将1中的代码注释掉,上传别忘了改回来。也可以加 != ‘localhost:8080′ 或者 127.0.0.1:8080 把这两个本地地址排除掉。还有return不能省略,省略后虽然本地没问题,但上传后页面打算速度非常的慢。

如果你用Google的ghs,以上方法就可以了。如果你用个人的反向代理 使用你的域名代理了*.appspot.com 那么上面还要加上相应的网址。以保证youID.appspot.com可以正常访问。但这样做就不能解决问题2了,因为其他域名通过你的独立ip进而通过youID.appspot.com来访问的。所以我会临时将域名指向一个类似Google ghs的反向代理(mail.8gdns.com)。哦,别忘了先关掉启用缓存。过几天搜索引擎应该就你的301了,再启用缓存并把这部分代码注释掉。下篇博文将讨论两种方向代理的方式。

如果只需要自己的域名和appspot的话可以这样,比如我的改为:

if self.request.headers["Host"] != ‘www.houkai.com’ and self.request.headers["Host"] != ‘hou-kai.appspot.com’ and self.request.headers["Host"] !=’localhost:8080′ :

我用的是micolog 0.5版,没有研究新版本,有能力的可以写个插件。

相关学习:http://code.google.com/intl/zh-CN/appengine
/docs/python/tools/webapp/requesthandlerclass.html

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>