PJBlog3优化——301定向跳转解决重复内容的问题
作者:dudo 来源:dudo博客 发布时间:2009-05-20 10:40:00
我的PJBlog在从2.7升级的3.0的时候,犹豫了很久。升级到PJBlog3.0就是看中了新增的静态页面功能,但是同时又担心造成博客出现大量的404未找到的错误。但升级之后,发现其实PJBlog 3支持多种链接方式,即使是使用完全静态模式,2.7的链接地址仍然可以使用。在纯静态下,PJBlog 3支持3种链接方式:
www.dudo.org/?id=178 这种方式实际上是先访问default.asp又做了跳转,返回的状态码是302;
www.dudo.org/article.asp?id=178 这种方式是传统的PJBlog2.7的方式,在PJBlog 3中依然可以使用,它的好处就是,原来在PJBlog 2.7中的链接不会因为网站升级导致出现404的错误,考虑很周到;
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.aspxhome.com 和aspxhome.com。虽然在同一个域名,但是搜索引擎仍然认为他是重复内容。对于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


猜你喜欢
- 前言本项目为IOT实验室人员签到考勤设计,系统实现功能:1.人员人脸识别并完成签到/签退2.考勤时间计算3.保存考勤数据为CSV格式(Exc
- 一、动机(Motivate)在我们的现实生活中有很多例子可以拿来说明这个模式,我们还拿吃饺子这个事情来说。我的奶奶说了,今天想吃饺子,发出了
- 示意图:python双向链表实现代码:#!/usr/bin/python# -*- coding: utf-8 -*-class Node(
- 先给出一个四人团对Decorator mode的定义:动态地给一个对象添加一些额外的职责。再来说说这个模式的好处:认证,权限检查,记日志,检
- 一开始用phpMyAdmin来执行,后来出现一堆错误,后来去掉了begin,end之后可以正常执行,但要执行存储过程,在phpMyAdmn中
- 一、问题描述在用python开发时经常用到logging这个包,根据官方示例,如果要指定日志级别可以写成如下的方式。import loggi
- 笔者在网上找了很多关于VSCODE配置Go语言的教程,但是由于版本等种种问题,最终都已失败告终。无奈只能在官方文档上寻求帮助,现在终于可以了
- 网上asp加密字符的MD5很多,也很普遍,因为受到asp语言本身的限制,对文件进行md5介绍的文章很少,本文通过2种方式来谈谈如何通过asp
- 1. 时间与时区1.1 时间标准UTC,世界标准时间,是现在的时间标准,以原子时计时。GMT,格林威治时间,是以前的时间标准,规定太阳每天经
- 本文总结了两种方法来导入opencv与numpy包,第一种是直接在Pycharm中导入两个包,第二种是在官网下载相关文件进行配置。本人比较推
- gzip文件读写的时候需要用到Python的gzip模块。具体使用如下:# -*- coding: utf-8 -*-import gzip
- 最近研究了京东商城用jQuery的实现如下:就是默认地址赋给img标签的src2属性,显示时赋给src属性值。function lazylo
- list字符串元素排序需求:对list中的字符串按照首字母排序实现:list1 = ['as,jj,bk']for line
- /*存储过程*/ sp_databases --列出服务器上的所有数据库 sp_server_info --列出服务器信息,如字符集,版本和
- while语句打印1-20的整数,并且每行打印五个数,为了实现每行5个数,我们使用一个if判断语句来实现,判断当打印出5个数之后,自动换行打
- 目录一、为什么使用 .gitignore ?二、使用规则2.1 注释2.2 忽略文件(1)忽略文件和目录(2)仅忽略文件2.3 忽略目录2.
- 具体代码如下所示:#coding:utf-8#!/usr/bin/python3from selenium import webdriver
- 本文实例讲述了Python实现连接MySql数据库及增删改查操作。分享给大家供大家参考,具体如下:在本文中介绍 Python3 使用PyMy
- 这一块的内容很少, 异常使用try except即可, 日志只需要几行配置.使用装饰器捕获方法内的所有异常我使用装饰器来整个包裹一个方法,
- 前言如果大家在网上搜索Python 正则表达式,你将会看到大量的垃圾文章会这样写代码:import repattern = re.compi