GODADDY主机动易6.8生成静态页百度收录乱码的解决方法
虽然很多人都在用PHP 但是我还是非常喜欢动易 动易真的是太容易上手了 记得刚学动易到自己可以随心所欲的制作模板 只用了10天时间 动易的模板制作太容易了 所以现在还舍不得换别的CMS。自从用了GODADDY空间 动易或多或少的遇到些问题 都已经解决 但是最近发现在GODADDY空间下动易生成的静态页面百度收录的快照都是乱码
截图如下:
经过几天摸索 终于找到解决方法 现在分享给大家。
一,百度收录乱码的原因:
百度收录乱码的原因很多,但是大多数都是编码问题。动易也不例外。动易默认的编码是GB2312,这种情况在动态页面下是没有什么问题的,但是生成静态的时候可能是由于GODADDY服务器对GB2312编码的 支持问题导致生成的页面不是GB2312编码的,而是UNICODE编码。这种编码的网页有个显著的特点,就是用IE浏览器查看编码的时候,他自动选取UNICODE 并且该选项是灰色,不能更改,如下图。
用IE简单判断网页的编码方法是点击 查看 - 编码 ,然后选取自动选择 这时候哪个编码被选中了 该网页就是什么编码。
如下图:
而并不是看网页源代码中<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> charset并不能决定网页的编码 他只是起到告诉浏览器网页采用的什么编码 如果charset与网页实际编码不符 那么不会影响浏览 但是百度蜘蛛就会误判断 造成快照乱码。
那么动易为什么只有百度快照乱码,而GOOGLE等快照正常呢,这主要是百度不支持UNICODE编码的原因造成的,大家可以做这么个实验,把收录乱码的HTML页面下载到本地 再用DW转换成GB2312或者UTF-8编码,会发现 UNICODE编码的网页体积比转换后大了整整一倍,一个SEO群里的高手说这就是百度不支持UNICODE的原因,百度太抠门了,UNICODE编码的网页太占资源。
二,解决方法:
找到问题的原因,就好解决了。既然是生成的时候自动生成了UNICODE编码的网页,那么我们让他生成GB2312或者UTF-8编码的不就解决问题了吗。
我们可以强制动易生成GB2312编码的网页 具体操作方法如下:
1,首先修改Include目录下PowerEasy.FSO.asp文件,有两个地方要修改。
修改函数:WriteToFile 和 WriteToFile_FSO
代码:
Sub WriteToFile(WriteToFileName, WriteToFileContent)
Dim ErrMsg
ErrMsg = WriteToFile_FSO(WriteToFileName, WriteToFileContent)
If ErrMsg <> "" Then
ErrMsg = WriteToFile_ADO(WriteToFileName, WriteToFileContent)
If ErrMsg <> "" Then
Response.Write "<li>生成 " & WriteToFileName & " 时出错。出错原因:" & ErrMsg & "</li>"
End If
End If
End Sub
修改为:
Sub WriteToFile(WriteToFileName, WriteToFileContent, WriteToCharset)
Dim ErrMsg
ErrMsg = WriteToFile_FSO(WriteToFileName, WriteToFileContent, WriteToCharset)
If ErrMsg <> "" Then
ErrMsg = WriteToFile_ADO(WriteToFileName, WriteToFileContent)
If ErrMsg <> "" Then
Response.Write "<li>生成 " & WriteToFileName & " 时出错。出错原因:" & ErrMsg & "</li>"
End If
End If
End Sub
代码:
Function WriteToFile_FSO(WriteToFileName, WriteToFileContent)
On Error Resume Next
Err.Clear
Dim hf
Set hf = fso.OpenTextFile(Server.MapPath(WriteToFileName), 2, True)
hf.Write WriteToFileContent
hf.Close
Set hf = Nothing
If Err Then
WriteToFile_FSO = Err.Description
Err.Clear
Else
WriteToFile_FSO = ""
End If
End Function
修改为:
Function WriteToFile_FSO(strFullName,strContent,strCharset)
On Error Resume Next
Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Type = 2
.Mode = 3
.Open
.Charset = strCharset
.Position = objStream.Size
.WriteText = strContent
.SaveToFile Server.MapPath(""&strFullName&""),2
.Close
End With
Set objStream = Nothing
Err.Clear
End Function
2,修改与生成相关的ASP文件,强制生成GB2312编码。
修改方法:在下面标注的行的)前面加上,"gb2312"
例如:
找到:Call WriteToFile(InstallDir & FileName_SiteIndex, strHTML)
改成:Call WriteToFile(InstallDir & FileName_SiteIndex, strHTML,"GB2312")
需要修改的文件及行数和该行代码功能
Include目录下:
PowerEasy.CreateJS.asp 第450行
Admin目录下:
Admin_CreateSiteIndex.asp 第39行 网站主页
Admin_CreateCommon.asp 第192行 栏目页 第86行 频道主页
第334行 生成专题列表
Admin_Class.asp, 第3388 行 第 3392行 第3436行 第3440行 第3444行 生成JS
Admin_CreateArticle.asp 第321行 文章内容页
Admin_CreateSoft.asp 第164行 软件内容页
Admin_CreatePhoto.asp 第270行 图片内容页
Admin_Skin.asp 第889行 第902行 网站风格管理
Admin_Advertisement.asp 第1443行 网站广告管理
Admin_CreateOther.asp 第277行 第405行 第530行 第655行 第894行 第949行 第1079行 网站生成管理下 生成网站综合数据(XML等)
Admin_Special.asp 第1083行 刷新专题JS
Admin_CreateXml.asp 第194行 更新栏目XML数据
Admin_CreateSiteSpecial.asp 第104行 第127行 生成专题页列表
修改这些基本上就能解决生成问题了 如果大家以后再发现别的功能出现如下图所示的错误提示时,大家接着修改提示的相应行即可。
通过以上修改,动易就能完美生成GB2312编码的网页了,同样方法也可以指定生成UTF-8编码的网页。
至此为止 ,GODADDY主机动易6.8生成静态页百度收录乱码的问题全部解决。
其他有关Godaddy乱码教程:
转移dedecms乱码的解决办法
Godaddy主机乱码的解决方法