D. 在
error.asp
里添加处理命令:
Call
ParaseUrl("/(\d+).htm","/user.asp?User=$1")
E. 在需要静态化的实例
user.asp
页面中添加代码:
引用文件
<%
response.write "
request__.querystring(""User"")=" & request__.querystring("User")
%>
F.
在地址栏输入/1.htm
,实际调用 /user.asp?user=1
3. 使用
asp.net
开发的网页程序,使用
URLRewriter.dll
实现静态化。 1. 下载
URLRewriter.rar,解压后放在/bin/目录下
2. 将
URLRewriter.rar
加入工程引用。
3. 配置 IIS 站点
,将扩展名为 html
指向处理程序
aspnet_isapi.dll。
IIS
站点->属性->主目录->配置->添加可执行文件和
aspx 处理相同,都是
c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
特别注意,一定不要选择
检查文件是否存在。
4. 在
web.config
中添加配置内容,压缩包里有。
<configSections>
<section
name="RewriterConfig"
type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,
URLRewriter"
/> </configSections>
<!-- 实际重定向
-->
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/(\d*).html</LookFor>
<SendTo>~/user/default.aspx?link=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<system.web>
<!--
需要在 IIS 里面增加
html 引用,改成
aspx 的引用
-->
<httpHandlers>
<add
verb="*"
path="*.aspx"
type="URLRewriter.RewriterFactoryHandler,
URLRewriter"
/>
<add
verb="*"
path="*.html"
type="URLRewriter.RewriterFactoryHandler,
URLRewriter"
/>
</httpHandlers>
5. 在地址栏输入
http://localhost/1.html
指向 http://localhost/user/default.aspx?link=1
4. 基于 Apache
HTTP Server
静态化
Apache Web
Server 的配置
(conf/httpd.conf
)
1. 在
httpd.conf
文件中查找
LoadModule
rewrite_module
modules/mod_rewrite.so
通常该行被注释,去掉“#”。如果没有就增加该行。
2. 加入代码:
<IfModule
mod_rewrite.c>
RewriteEngine
On
RewriteRule
^/([0-9]+).html$
/user.php?user=$1
</IfModule>
3.
如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置文件.htccess
中去,否则可能无法使用。
4. 重启
Apache,重新载入配置。
5. 在地址栏输入
http://localhost/1.html
,实际指向
http://localhost/user.php?user=1
5. 静态化后文件格式
链接静态化后可以是
html
文件,也可以是目录,通常目录的权重大于文件的权重,可以在搜索
引擎中获得更好的排名。
例如:优化前:http://www.supercss.com/user.asp?id=1
优化后
文件:http://www.supercss.com/user/1.html
目录:http://www.supercss.com/user/1/
同等条件下
http://www.supercss.com/user/1/
有更高的优先权。
框架结构
框架结构,即帧结构(Frame),包括IFrame,Frame。
例如:框架结构示例。
<frameset
rows="97,*"
cols="*"
frameborder="yes"
border="0"
framespacing="0">
<frame src="top.html"
name="topFrame"
frameborder="no"
scrolling="No"
noresize="noresize"
id="topFrame"
title="topFrame"
/>
<frameset
rows="*"
cols="164,*"
framespacing="0"
frameborder="no"
border="0">
<frame src="search_left/cat20.html?&catid=20&redirect=n"
name="left"
frameborder="no"
scrolling="yes"
id="left"
title="leftFrame"
/>
<frame src="CPU/cat20_list_1.html"
name="main"
id="main"
scrolling="yes"
title="main">
</frameset>
</frameset>
<noframes>
在这里进行优化!
增加链接 <a href=”
http://intozgc.com/CPU/cat20_list_1.html”
title=”
CPU报价”>
CPU报价</a>
</noframes>
框架型网站的优越性体现在页面的整体一致性和更新方便上。尤其对于那些大型网站而言, 框架结构的使用可以使网站的维护变得相对容易。但框架对搜索引擎来说是一个很大的问题,这是由于大多数搜索引擎都无法识别框架,也没有什么兴趣去抓取框架中的内容。此外,某些浏览器也不支持框架页面。
如果网页已经使用了框架,或出于某种原因一定要使用框架结构,则必须在代码中使用
“Noframes”标签进行优化,把
Noframe
标签看做是一个普通文本内容的主页。在
<Noframe></Noframe>区域中包含指向
frame
页的链接以及带有关键词的描述文本,同时在框架以外的区域(title,meta)也出现关键词文本。这样,搜索引擎才能够正确索引到框架内的信息。
还有一个办法是采用
iframe
即内联框架(Inner
Frame)技术来避免
Frame
带来的不便。所谓
iframe
也是框架的一种形式,它是相当于在主浏览器窗口中内嵌一个子窗口,内容自动打开。iframe
可以嵌在网页中的任意部分,也可以随意定义其大小,其代码显示为:
实例:<iframe src=xx width=x height=x scrolling=xx frameborder=x></iframe>对搜索引擎来说,iframe
中的文字是可见的,也可以跟踪到其中链接指向的页面,不过与用户所见不同的是,搜索引擎将
iframe
内容看成单独的一个页面内容,与被内嵌的页面无关。
图像优化
一般而言,搜索引擎只识读文本内容,对图片文件是视而不见的。同时,图像文件直接延缓页面加载时间,如果超过 20 秒网站还不能加载,用户极有可能离开你的网站。因此,
除非你的网站内容是图片为主,比如游戏站点或者图片至关重要,否则尽量避免使用大图片,
更不要采用纯图像制作网页(SPLASH
PAGE)。
网站图片优化的有以下几点:
1. 在保持图像质量的情况下尽量压缩图像的文件大小。
2.
Alt 属性:
每个图像<IMG>标签中都有 ALT 属性,搜索引擎会读取该属性以了解图像的信息。因此,最好在所有插图的 ALT 属性中都有文字描述,并带上该页关键字在其中。
比较好的例子:
<img align="center" src="NP110.jpg" alt="浪潮英信 NP110 G2 服务器图片" >
3.在图片上方或下方加上包含关键词的描述文本;
4.使用链接链接到这个图片。
例如:Google 图片搜索 NP370 浪潮英信NP370 G2 排名第一。Google的图像搜索(Googlebot-Image)和Google的文本搜索(Googlebot)不是同一个蜘蛛。
FLASH 优化
Flash 会使页面很好看,不过 FLASH 网页有一个非常致命的问题,即大部分搜索引擎无法识别FLASH 中的信息。
例如:一汽轿车
FLASH 优化可以从以下三个方面来考虑:
1、做一个辅助 HTML 版本:
保留原有 FLASH 版本的同时,还可以设计一个 HTML 格式的版本,这样既可以保持动态美观 效果,也可以让搜索引擎通过 HTML
版本的网页来发现网站。
2、将
Flash 内嵌
HTML 文件:
还可以通过改变网页结构进行弥补,即不要将整个网页都设计成 Flash 动画,而是将 Flash内容嵌入到 HTML 文件中,这样对于用户浏览并不会削弱视觉效果,搜索引擎也可以从HTML
代码中发现一些必要的信息,尤其是进入内容页面的链接。
表格是网页最重要的排版方式。
1.如果某个网页采用了大段的长篇文本,除了可以将一页文本分成多面,还可以考虑将文本置入不同表格中,这样不仅管理方便,也使得该页加载时每个
表格内容依次加载,这样访问者就可以一边看已下载内容一边等待剩余部分加载,而不是等
待很久之后才一齐加载出来。例如:新浪新闻
2.表格之内套嵌太多表格也不利于页面加载,因浏览器是先加载完大表格之后再加载内嵌的小表格,因此内嵌表格会最终降低整页加载速度。
3.尽量采用XHTML标准,使用DIV代替表格。具体方法是采用CSS里面的
FLOAT
属性,position
属性等定位使用FLOAT
属性的例子。复杂三栏式版面使用position
属性等定位。复杂版面设计.htm
网页减肥
代码设置不妥不仅延长网页加载时间,也严重影响蜘蛛程序对网页内容的抓取。通过对网页代码进行清减去掉臃肿杂乱的代码,减小网页文件大小,能够加快网页加载速度,让蜘蛛快速索引到重要内容。整个网页最好不要超过
30K,文字内容最好
5K-10K
之间,Google
只对内容的前 5000
个字进行索引。
网页减肥重点涉及以下几个要点:
1.CSS 样式
网页制作应通过 CSS(层叠样式表单)来统一定制字体风格。 例如:
<b style="color:red;font-size:16px;">测试</b>
<div id="divmain" style="font-size:12px;">DIV</b>
<div style="color:red;"> 红色 <b style="color:green;">绿色</b> </div>
----------------------
<style type="text/css">
b { color:red;font-size:16px; } /*通用对象*/
#divmain {font-size:12px;} /* ID 对象 */
.red {color:red;}/* 定制类别 */
.red b {color:green;}/* 定制类别下的 通用对象*/
</style>
<b>测试</b>
<div id="divmain">DIV</b>
<div class="red"> 红色 <b>绿色</b> </div>
CSS 减肥示例文件 把文字的字体、字号、颜色、背景色等统一起来,不用对每段文字单独进行格式定义,从而减少大量重复性标签。注意把所有 css
文件单独存放在命名为
css 的外 部文件中。
语法: <link rel="stylesheet" type="text/css" href="/common/client.css">
作用的优先级:自身的style属性
>
页面的内部style对象
> 页面外部css文件。
下载:css帮助
2.JavaScript:
1. 简化js中的函数名称和变量。
例如:Google,里面的函数名称只有 1 个或者 2 个字符。
2.
将网页的公共部分转换为脚本并存于
js
文件里。这样可以减少文件大小,加快下载速度,同时也方便管理。不过不能将导航等等优化的关键代码转换成
js,否则搜索引擎搜索不到。
转换方式:
原来:<h1>天天收藏夹</h1>
脚本:document.write(“<h1>天天收藏夹</h1>”);
例如:华军软件园 源代码,将标题、导航等等都放着js文件里,将导航放在js里面就不太好了。
3.使用
base 标签:
Base 标签是一个全集控制的标签。
比如:
<A HREF="http://www.supercss.com/code/1.htm " target=”_blank”>代码一</A>
<A HREF="http://www.supercss.com/code/2.htm " target=”_blank”>代码一</A>
其中 http://www.supercss.com 和 target=”_blank”: 多次重复,增加无用的代码。
修改为:
<head>
<base href=”http://www.supercss.com/”
target=”_blank”>
</head>
<body>
<a href=”/code/1.htm”>代码一</a>
<a href=”/code/2.htm”>代码二</a>
</body>
4.慎用网页减肥工具
通常的网页减肥工具,对 htm 减肥具有一定的破坏性,常常为了减肥将标签的 后半个标签删除,造成网页的不完整。
处理前:<table><tr><td>第一行</td></tr><tr><td>第二行</td></tr></table>
处理后:<table><tr><td>第一行<tr><td>第二行</table>
处理后 </td></tr> 被去掉了,使页面不完整。
5.删除空格和回车
如果要更加苛刻的减肥,那最后一步就是删除空格了,还可以使文件大小下降很多。不过删除空格后的页面由于没有阶梯排列,将很难读懂。
例子:百度首页的代码就非常紧凑。
不同位置的网页优化
网站首页优化:
1、关键词选择
首页的关键词应该选择核心关键词。通常这些词优化难度比较大,需要大量的外部链接。交换链接的时候以网站名称或者核心关键词命名链接。参见:域名及网站名称中的关键词。
例如:在搜索引擎优化行业,首页的关键词应该是
SEO。
2、网页链接
首页大部分都是链接,最新的链接要放在网页的前面,便于搜索引擎收录。
3、
更新频率
蜘蛛第一个来到的页面就是首页,首页一定要经常更新,蜘蛛就会来的比较频繁,链接的页面将会更快被收录。
栏目页优化:
1. 关键词选择
栏目页的关键词,相对首页,可以选择次一些的关键词,以核心“SEO”为例,栏目也可以是“SEO培训”,“SEO 教程”等。
2.
内部链接
栏目页一定要链接到首页,为首页建立内部链接。同时和其他栏目页也要相互链接。栏目页大量的链接内容页,链接数量控制在 100 个以内。
内页优化:
1. 关键词
内页可以不特别关注关键词,可以将 Meta Title 设置成相同的内容。在页面里更多的利用 H1,IMG、STRONG 标签优化关键词。
2. 内容
网页要以内容为主,大于 5K 时,可以做翻页处理。内容最好是原创,内页收录的越多,从搜索引擎来的流量才能越多。
3. 链接
通常内页很少有外部链接的,除非内容非常好,被人转载。内页要链接栏目页和首页,大量的内页链接,有利于栏目页和首页的关键词排名。内页最好能链接内容相关的其他内页,这样可以增加网页的相关度,同时方便用户浏览,增加网站的
PV。
Robots.txt
搜索引擎通过一种程序 robot(又称 spider),自动访问互联网上的网页并获取网页信息。
您可以在您的网站中创建一个纯文本文件 robots.txt,在这个文件中声明该网站中不想被 robot 访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容。robots.txt
文件应该放在网站根目录下。
robots.txt
文件的格式:
"robots.txt"文件包含一条或更多的记录,这些记录通过空行分开(以
CR,CR/NL, or
NL
作为结束符),每一条记录的格式如下所示:
"<field>:<optionalspace><value><optionalspace>"。
在该文件中可以使用#进行注解,具体使用方法和
UNIX
中的惯例一样。该文件中的记录通常以一行或多行
User-agent
开始,后面加上若干
Disallow
行,详细情况如下:
User-agent:
该项的值用于描述搜索引擎
robot 的名字,在"robots.txt"文件中,如果有多条
User-agent
记录说明有多个
robot
会受到该协议的限制,对该文件来说,至少要有一条
User-agent
记录。如果该项的值设为*,则该协议对任何机器人均有效,在"robots.txt"文件中,"User-agent:*"这样的记录只能有一条。
Disallow:
该项的值用于描述不希望被访问到的一个
URL,这个 URL
可以是一条完整的路径,也可以是部分的,任何以
Disallow 开头的
URL 均不会被
robot
访问到。例如"Disallow:/help"对/help.html
和 /help/index.html
都不允许搜索引擎访问,而"Disallow:/help/"则允许
robot 访问/help.html,而不能访问
/help/index.html。任何一条
Disallow
记录为空,说明该网站的所有部分都允许被访问,在"/robots.txt"
文件中,至少要有一条
Disallow
记录。如果"/robots.txt"是一个空文件,则对于所有的搜索引擎
robot,该网站都是开放的。
robots.txt
文件用法举例:
例 1. 禁止所有搜索引擎访问网站的任何部分
下载该robots.txt文件 |
User-agent: * Disallow: / |
例 2. 允许所有的 robot 访 问 ( 或者也可以建一个空文件
"/robots.txt" file) |
User-agent: *
Disallow: |
例 3. 禁止某个搜索引擎的访问 |
User-agent:
BadBot
Disallow: / |
4. 允许某个搜索引擎的访问 |
User-agent:
baiduspider
Disallow:
User-agent: *
Disallow: / |
例 5.一个简单例子
在这个例子中,该网站有三个目录对搜索引擎的访问做了限制,
即搜索引擎不会访问这三个目录。
需要注意的是对每一个目录必须分开声明,而不要写成
"Disallow: /cgi-bin/ /tmp/"。
User-agent:后的*具有特殊的含义,代表"any robot",所以在该
文件中不能有"Disallow: /tmp/*" or "Disallow:*.gif"这样的记录出现 |
User-agent: *
Disallow:
/cgi-bin/
Disallow: /tmp/
Disallow: /~joe/ |
Robot
特殊参数:
1. Google
允许 Googlebot:
如果您要拦截除 Googlebot 以外的所有漫游器访问您的网页,可以使用下列语法:
User-agent:Disallow:/
User-agent:Googlebot
Disallow:
Googlebot
跟随指向它自己的行,而不是指向所有漫游器的行。
"Allow"扩展名:
Googlebot
可识别称为"Allow"的
robots.txt
标准扩展名。其他搜索引擎的漫游器可能无法识别此扩展名,因此请使用您感兴趣的其他搜索引擎进行查找。"Allow"行的作用原理完全与"Disallow"行一样。只需列出您要允许的目录或页面即可。
您也可以同时使用"Disallow"和"Allow"。例如,要拦截子目录中某个页面之外的其他所有页面,可以使用下列条目:
User-Agent:Googlebot
Disallow:/folder1/
Allow:/folder1/myfile.html
这些条目将拦截
folder1
目录内除
myfile.html
之外的所有页面。
如果您要拦截
Googlebot
并允许
Google
的另一个漫游器(如
Googlebot-Mobile),可使用"Allow"规则允许该漫游器的访问。例如:
User-agent:Googlebot
Disallow:/
User-agent:Googlebot-Mobile
Allow:
使用 *
号匹配字符序列:
您可使用星号
(*)
来匹配字符序列。例如,要拦截对所有以
private
开头的子目录的访问,可使
用下列条目:
User-Agent:Googlebot
Disallow:/private*/
要拦截对所有包含问号
(?)
的网址的访问,可使用下列条目:
User-agent:*
Disallow:/*?*
使用 $
匹配网址的结束字符
您可使用 $
字符指定与网址的结束字符进行匹配。例如,要拦截以
.asp
结尾的网址,可使用
下列条目:
User-Agent:Googlebot
Disallow:/*.asp$
您可将此模式匹配与
Allow
指令配合使用。例如,如果
? 表示一个会话
ID,您可排除所有包含该
ID
的网址,确保
Googlebot
不会抓取重复的网页。但是,以
?
结尾的网址可能是您要包
含的网页版本。在此情况下,可对
robots.txt
文件进行如下设置:
User-agent:*
Allow:/*?$
Disallow:/*?
Disallow:/
*?一行将拦截包含
?
的网址(具体而言,它将拦截所有以您的域名开头、后接任意字符串,然后是问号
(?),而后又是任意字符串的网址)。
Allow:
/*?$
一行将允许包含任何以
?
结尾的网址(具体而言,它将允许包含所有以您的域名开头、后接任意字符串,然后是问号
(?),问号之后没有任何字符的网址)。
Sitemap
网站地图:
对网站地图的新的支持方式,就是在 robots.txt 文件里直接包括 sitemap 文件的链接。就像这样:
Sitemap: http://www.supercss.com/index.xml
目前对此表示支持的搜索引擎公司有 Google, Yahoo, Ask and MSN。不过,我建议还是在 Google Sitemap
进行提交,里面有很多功能可以分析你的链接状态。
Robots.txt
带来的好处:
1. 几乎所有的搜索引擎 Spider 都遵循 robots.txt 给出的爬行规则,协议规定搜索引擎 Spider 进入某个网站的入口即是该网站的
robots.txt,当然,前提是该网站存在此文件。对于没有配置robots.txt
的网站,Spider
将会被重定向至
404
错误页面,相关研究表明,如果网站采用了自定义的
404
错误页面,那么
Spider
将会把其视作
robots.txt——虽然其并非一个纯粹的文本文
件——这将给
Spider
索引网站带来很大的困扰,影响搜索引擎对网站页面的收录。
2.
robots.txt
可以制止不必要的搜索引擎占用服务器的宝贵带宽,如
email
retrievers,这类搜索引擎对大多数网站是没有意义的;再如
image
strippers,对于大多数非图形类网站来说其也没有太大意义,但却耗用大量带宽。
3.
robots.txt
可以制止搜索引擎对非公开页面的爬行与索引,如网站的后台程序、管理程序,事实上,对于某些在运行中产生临时页面的网站来说,如果未配置
robots.txt,搜索引擎甚至会索引那些临时文件。
4.
对于内容丰富、存在很多页面的网站来说,配置
robots.txt
的意义更为重大,因为很多时候其会遭遇到搜索引擎
Spider
给予网站的巨大压力:洪水般的
Spider
访问,如果不加控制,甚至会影响网站的正常访问。
5.
同样地,如果网站内存在重复内容,使用
robots.txt
限制部分页面不被搜索引擎索引和收录,可以避免网站受到搜索引擎关于
duplicate
content
的惩罚,保证网站的排名不受影响。
robots.txt
带来的风险及解决:
1. 凡事有利必有弊,robots.txt 同时也带来了一定的风险:其也给攻击者指明了网站的目录结构和私密数据所在的位置。虽然在 Web
服务器的安全措施配置得当的前提下这不是一个严重的问题,但毕竟降低了那些不怀好意者的攻击难度。
比如说,如果网站中的私密数据通过
www.yourdomain.com/private/index.html
访问,那
么,在
robots.txt
的设置可能如下:
User-agent:
*
Disallow:
/private/
这样,攻击者只需看一下
robots.txt
即可知你要隐藏的内容在哪里,在浏览器中输入
www.yourdomain.com/private/
便可访问我们不欲公开的内容。对这种情况,一般采取如下的办法:
设置访问权限,对/private/中的内容实施密码保护,这样,攻击者便无从进入。
另一种办法是将缺省的目录主文件 index.html 更名为其他,比如说 abc-protect.html,这样,
该内容的地址即变成
www.yourdomain.com/private/abc-protect.htm,同时,制作一个新的index.html
文件,内容大致为“你没有权限访问此页”之类,这样,攻击者因不知实际的文件名而无法访问私密内容。
2.
如果设置不对,将导致搜索引擎将索引的数据全部删除。
User-agent: *
Disallow: /
上述代码将禁止所有的搜索引擎索引数据。
参见:页面收录减少,如何检查判断?
网页相似度
网页相似度是比较网页是否相似,通常有以下两种计算方式:
1. 根据网页摘要来比较,如果多个网页摘要的 md5 值一样,证明这些网页有很高的相似性
2. 根据网页出现关键词,按照词频排序,可以取 N 个词频高的,如果 md5 值一样,证明这些网页有很高的相似性。
网页相似度对
SEO 的影响:
Google 对网页相似度限制在 60%,如果超过这个标准将导致页面不被收录,或者收录后排名靠后中。
参考:如何降低网页相似度?
404 页面
相关服务器返回代码介绍:
200 客户端请求已成功响应。
301 永久重定向某个链接。
302 临时重定向到某个链接。
404
访问的页面暂时不存在。
当网站进行调整、页面进行修改的时候,便会有网页被删除、改名或移动位置,这时候,虽然相应内容的网页还存在于网站中,但使用原来的地址访问则无法访问,或者由于拼写错误导致一个无效的链接,都将使服务器返回
404 状态码。
但是,Web
服务器默认的
404
错误页面,均十分简陋、呆板且对用户不友好,无法给予用户寻找相应信息的更多线索,用户看到这类页面往往最直接的反应并是关闭浏览器窗口离开,这在很大程度上给网站造成损失。毕竟,对网站来说,用户永远是最重要的资源,以这种方式损失用户更意味着某种程度的失败。
这也是许多网站使用自定义
404
错误页面的原因。通过良好的自定义
404
页面,可以包含对网站的相应介绍、用户可能感兴趣的内容链接或者网站内容导航链接、内容搜索功能等,能够有效地帮助访问者找到其欲寻找的内容或相似的内容,提高用户在网站内浏览更多信息的机会。
正确定义 404
错误页面:
1. 对于已经存在的信息由于路径改变而导致访问不了时,应该在 IIS 中定义 404 错误指向一个动态页面,在页面里面使用 301
跳转到新的地址,此时服务器返回
301 状态码。
2.
当访问一个错误的链接时,将调用
404
页面,但由于在
IIS
里面设置的不同将导致返回不同的状态码:
1. 404 指向的是一个 htm 文件,此时页面返回的 404 状态码,这是正确的。
2. 404 指向的是一个 URL,例如 /error.asp,如果不在页面里面进行设置,仅仅是返回提示的 HTML 代码,将导致页面返回 200
状态码,此时的危害在于,当很多页面找不到时,都返回和访问正常页面时返回一样的
200
状态码,将使搜索引擎认为该链接存在,并以错误页面的内容进行收录,当这样的链接很多时,将导致大量页面重复,使网站排名降低。处理方法:在显示完提示内容后,增加语句:
Response.Status="404
Not
Found"
,这样就保证页面返回
404 状态码。
3. 避免在调用
404
页面的时候返回
302
状态码,容易被搜索引擎认为是重定向作弊。
4. 检测方法,使用 HttpWatch 查看返回代码。参见:在这个例子中,我请求的是 http://www.sina.com.cn/1223.html
,新浪返回错误页面,然后
5 秒钟后,使用js跳转到首页。