dudo博客

我的PJBlog在从2.7升级的3.0的时候,犹豫了很久。升级到PJBlog3.0就是看中了新增的静态页面功能,但是同时又担心造成博客出现大量的404未找到的错误。但升级之后,发现其实PJBlog 3支持多种链接方式,即使是使用完全静态模式,2.7的链接地址仍然可以使用。在纯静态下,PJBlog 3支持3种链接方式:

  1. www.dudo.org/?id=178 这种方式实际上是先访问default.asp又做了跳转,返回的状态码是302;
  2. www.dudo.org/article.asp?id=178 这种方式是传统的PJBlog2.7的方式,在PJBlog 3中依然可以使用,它的好处就是,原来在PJBlog 2.7中的链接不会因为网站升级导致出现404的错误,考虑很周到;
  3. www.dudo.org/article/CSSJS/178.htm 这是PJBlog 3中全静态模式下的链接方式。

1、便利带来的问题

虽然PJBlog做了如上细致的考虑,但是这样却产生了一个问题,那就是对于一个页面有三个(两个,1最终是一个跳转)链接指向本页面。当然我们都知道其实是一个页面,只是链接的形式不同而已,但是对于Google、百度等搜索引擎来说,它们并不认为这是同一个页面,它们会看作成三个页面,三个完全重复的页面。它的好处就是可以增加搜索引擎的收录量,同一篇文章被收录三次。但是坏处也是显而易见的,那就是他降低页面的权重,如果你的一个页面的总权重是10的话,由于有三个完全相同的页面,所以这三个页面会平分权重,每个页面权重3.3。我们都知道,页面权重直接决定了页面出现在搜索引擎的位置。当然了,你也许会说,虽然页面排名靠后了,但是出现的次数多了。嗯,的确如此,但是仔细观察你会发现,当这三个页面同时出现时,其实只有一个在列表里,其它两个向后缩进出现的(外部链接引用多的链接方式出现在正常列表,其它的缩进,意思为重复内容)。

Google对于重复内容的定义:

重复内容通常是指域内或多个域之间存在的、与其他内容完全匹配或大致类似的内容。大多数情况下,
重复内容本身不具有欺骗性。非恶意重复内容可能包含:

  • 能够生成用于移动设备的常规和简化网页的论坛
  • 通过多个不同网址显示或链接的存储项目
  • 网页的可打印版本

2、使用301重新定向解决问题

Google对于解决重复内容的问题,有不少的方法可以参考,其中主要就是通过robot.txt和301重新定向解决的。使用robot.txt的方法就是阻止搜索引擎访问这个页面,这样做的问题就是蜘蛛从外部链接进入你到的网站之后,会发现这个链接在robot.txt中被禁止,从而退出索引。所以使用301重新定向还是比较可靠的一个办法。无论是用户还是搜索引擎通过1或者2的试访问你的网站时,都会被重新定向到3上,这样所有的权重都会在一个页面上,从而提高页面在搜索引擎中的排名。下面说说PJBlog 3的具体解决办法。

在common/function.asp中找到

<script src="reg.js" Language="JScript" runat="server"></script>

在其前面的%>内加上如下代码:

'*************************************
'301重定向
'*************************************
function RedirectURL301(url)
	CloseDB()
	Response.Status="301 Moved Permanently"
	Response.AddHeader "Location",url
	Response.End
End Function

在header.asp中找到

Dim Tid

一直到

'输出文件头

之间的全部代码替换为:

    Dim Tid
    If CheckStr(Request.QueryString("id"))<>Empty Then
        Tid = CheckStr(Request.QueryString("id"))
    End If
    If Len(Tid)>0 Then
    	Dim rUrl
        If blog_postFile = 2 Then
        	rUrl = caload(Tid)
	    else
		 	rUrl = "article.asp?id=" & Tid
	    end if
	    RedirectUrl301 (rUrl)
	    Response.end
    End If
End If
If InStr(Replace(LCase(Request.ServerVariables("URL")), "\", "/"), "/article.asp") = 0 Then
    getBlogHead BlogTitle, "", -1
ElseIf CheckStr(Request.QueryString("id"))<>Empty Then
    Tid = CheckStr(Request.QueryString("id"))
	If Len(Tid)>0 And blog_postFile = 2 Then
		rUrl = caload(Tid)
		RedirectURL301(rUrl)
	End If
End If

然后保存,上传。
这样你再访问,你的域名.com/article.asp?id=187 时,就会发现自动中转到 你的域名.com/article/187.htm了。如果使用工具检测浏览器返回的状态码,那么你将得到是一个301代码。

3、链接形式的改变

一个域名会有两种写法,即是否有www。如www.dudo.org和dudo.org。虽然在同一个域名,但是搜索引擎仍然认为他是重复内容。对于Google搜索引擎你可以在Google网站管理员工具中设定首先域,但是对于Google以外的搜索引擎这样的设定不起作用。因此这里把使用dudo.org域名进入的访问全部定位到www.dudo.org上去。下面是具体方法:

在header.asp中找到

Dim BlogTitle

在其后添加

 Dim referURL
 If Request.ServerVariables("QUERY_STRING") <> "" Then
	referURL = Request.ServerVariables("SCRIPT_NAME") & "?" &  Request.ServerVariables("QUERY_STRING")
 Else
	referURL = Request.ServerVariables("SCRIPT_NAME")
 End If
 If LCase(Request.ServerVariables("SERVER_NAME") = "dudo.org") Then
	RedirectURL301("http://www.dudo.org" & referURL)
End If

保存上传,然后测试效果。(注意把所有的dudo.org都替换成你的域名哦 :-)

后记:

Google对于链接规范化的建议中,提到使用rel=”canonical”,来告诉搜索引擎这个链接的写法是不规范的,对于我们网站内容的链接这样做是可行的,但是对于外部那些指向我们页面的链接,我们就无法去约束了。所以个人感觉301是比较的解决办法。如果你有什么好的建议或者解决办法的话欢迎和我分享。

所有演示效果请参照http://www.dudo.org/

本文网址:http://www.dudo.org/article/WebDev/301_redirect_for_pjblog.htm
转载请注明出处!



共有(9)条评论

16282402 发表于 2009-5-22 at 19:28 #1楼

16282402

[回复]


海天无影 发表于 2009-6-15 at 23:43 #2楼

是这样加密的文章就打不开了
要是能判断下就好了
[reply=dudo,2009-06-15 11:45 PM]这个基本上很困难~~~应该可能判断,好像参数是 ispost 还是什么~研究研究吧[/reply]

[回复]


zsdfm 发表于 2009-6-26 at 15:56 #3楼

发现错误,按博主的方法去修改,我整个CSS都错位了,不知道是不是半静态下的修改不是这种方法呢?

麻烦楼主指点一下

[回复]


小鸟 发表于 2009-8-01 at 11:04 #4楼

全部失败。哎 我对301 无心了

[回复]


caoz 发表于 2009-11-05 at 16:41 #5楼

若是这样做的话,似乎会丢失锚标记,如网址“www.dudo.org/?id=280#comm_792”,但主流的浏览器却又能正确的显示,这是为什么呢?浏览器自行处理的?

[回复]


蛛蛛虎 发表于 2010-1-16 at 10:51 #6楼

恩,可是静态页面下链接是不跳转的。

比如:本文的链接dudo.org/article/WebDev/301_redirect_for_pjblog.htm

呵呵,想解决这种问题才搜进来的。

[回复]


[…] 搜索引擎严重不友好,影响页面收录。由于搜索引擎已经收录了你Z-Blog或者PJBlog中的页面,第一次蜘蛛沿着原来的链接年爬到你的页面发现错误,第二次还会发现同样的错误,次数一多蜘蛛将不会再来了。正确的做法是,如果你的页面已经转移了,那么你要重新定向到一个新的页面并向搜索引擎返回一个301代码,告诉搜索引擎下次使用新的链接来访问。如果这个页面确实已经不存在了,那么你要返回一个410资源永久删除的代码。 […]


hikop 发表于 2011-8-22 at 22:33 #8楼

是否有pjblog专门做301专项的文章急需啊,谢谢楼主了

[回复]


潮州真空袋 发表于 2016-7-24 at 15:53 #9楼

恩,可是静态页面下链接是不跳转的

[回复]


随便说两句
名字:
Email:
网站:
内容:

无觅相关文章插件,快速提升流量