时间:2010-05-30 11:00
,英文全名searchengineoptimization,中文翻译为搜索引擎最佳化,人称搜索引擎优化。至于什么才叫seo,这个概念多而杂,我总结为一句话:seo人员通过对搜索引擎抓取网页内容的原理和算法的了解,对网站进行一系列针对搜索引擎收录排名友好性而对网站所进行的更改,从而让网站通过搜索引擎获取更多的收益。
seo是网络营销的一种手段,为sem(搜索引擎营销)的一种方式。只是网站推广的一部分而非全部。
viewstate优化:
问题:
大量的asp.net生成的viewstate垃圾信息超过了20k,网上有文章讲,如果页面前二k不是内容会被引擎处罚,不利于搜索引擎收录。
解决方法:
1.在开发时。将页面的viewstatedisable掉
如下:
<%@pagelanguage="c#"codefile="index.aspx.cs"enableviewstate="false"inherits="index"%>
这样能减少viewsatate的代码量,但程序要相应的调整
2.重写页面,使用asp.net控件适配器架构,让viewstate移动到页在的尾部,网页打开二k内出现了正文,那就可以收录,同时网页打开速度也提高。
具体实现方法代码来自老外的一篇文章:
searchengineoptimization-movingviewstatetothebottomofthepage
下载源码:seoviewstate.zip(29.67kb)
html标签:转载:abcdblog-design.cn/post/aspdotnet-seo-first.html
div的作用:
网页架构,在搜索引擎看来它只代表网页层级和架构。
table标签:
做为网站程序员请别忽略它,它的使命是显示数据。
span标签:
作为.net程序员应该重点注意这个标签,在搜索引擎中它将被忽视。
dl、dt、dd标签:
-------------------------------------------------------------------------------------------------------------------
这三个标签用的人不多,但在seo中它有很大的作用,他随型同与<ul><li>,但有时候他的作用更大.例如
<dl>
seo网站
<dt>seo博客</dt>
<dd>seo博客是seoer在学习搜索引擎优化的时候写心得的地方</dd>
<dt>seo论坛</dt>
<dd>seo论坛是seoer在学习搜索引擎优化的时候交流的地方</dd>
</dl>
上面代码,象这样的推进层递进列表如果用<ul><li>的话,还需要在中间签到其他标签,这样进一步增加了网页负担.
----------------------------------------------------------------------------------------------------------------------------b,strong标签:
这两个是着重标签,用来表明文字内容中的重要文字。在关键词排名上有一定的权重,但切勿滥用,自然就好。
h1,h2,h3,h4,h5,h6标签
这六个标题标签在关键词排名上也起到一些作用,权重依次类推。基本用法页面标题用h1,栏目标题h3,我所觉得h1和h3这两个用的最多。
a标签
使用应该是<ahref="abcdxxxx.com.cn">程序员seo系列</a>这样写最好了,而不要在<a>标签里面再加个class,title什么的,如果可以的话,最好连target这个也不让他出现。无论百度还是google超链节都非常重要,所以a标签的文字设置一定要好好把握。
img标签
就应该<imgsrc="abcdblog.soso.com/photo/seo.jpg"alt="程序员照片"/>,在xhtml写alt是必须的,当然有alt在搜索引擎看来也是非常健康而必要的。
反向链接网络
讲到链接那我们就来接触几个概念,先看一下下面的反向链接网络图。
反向链接
a网页中有一个链接指向b网页,那么a网页就是b网页的反向链接!如下图,所有链接都算反向链接。
外部链接
如上图中的①链接,其他网站给你网站的网页做的反向链接,叫外部链接。
内部链接
网站内部网页与网页之间的连接叫做内部链接。
特别提醒
反向链接是网页和网页之间的关系,不是网站与网站之间的关系。不管外部链接还是内部链接,都是反向链接,对搜索排名都是有影响的。可以在搜索引擎用link来进行查询,例如查我的blog就在搜索框输入“link:abcdblog-design.cn”,便可以查到我blog的有效反向链接
反向链接在seo中的影响
反向链接在搜索引擎的权重是无庸质疑的高。按照google的说法,pr值的计算有着非常复杂的算法,但是不用质疑的是,反向链接的数量和质量对pr值起着决定性的影响。如果你想获得比较高的pr值,一定要拥有一定数量的高质量的反向链接,或者足够量大的反向链接。查看网页的pr值,可以下载google工具栏安装到你的浏览器上,这样的话,浏览任何网页,都可以直接看到它的pr值,这里给大家推荐一下。下载地址:abcdtoolbar.google.com/intl/zh-cn.
seo工作:
1.内部链接优化
程序员的seo工作:如下图链接关系图。我们处在b文章页面,那么就可以在该页导出一些链接到网站的其他页。
如图所示,为你的网站程序提供网站导航和面包屑导航功能。这样可以让你的页面层级更加明显。形成一个强大的树状链接网。
如图,为你的网站程序文章页提供“上一篇,下一篇”功能。这样可以让你所有此系列内容页形成一个强大的扁线性链接网。
如所示,为你的网站程序提供相关页面功能。可以是关键词相关,也可以是父级相关。
为你的网站程序提供一个生成站点地图的功能,或则制作一张站点地图。站点地图我将在下篇文章谈到。
最后说两点,每个网页最多离首页四次点击就能到达,网站的导航系统最好使用文字链接。
2.友情链接交换
友情链接交换是作为引入外部链接的一个重要的方式。找一些与自己网站主题相类似的网站做友情连接是一种很好很高效的外链引入方案。
所以在这里我强烈建议程序员在网站程序制作过程中为自己的网站系统提供一个友情链接的申请和管理的模块。
3.其他增加反向链接的手段
包括软文链接,购买链接,博客等等。
这里建议程序员为自己的网站建立一个rss源,为了方便用户通过豆瓣,鲜果,google等进行订阅,而也方便搜索引擎抓取。跟反向链接的关系是什么呢?订阅的人越多也可以为你的网站增加反向连接。同时如果你的网站更新足够快,内容足够健康,网站权威足够大你可以利用他来作为google新闻咨询,博客等的文章源。
最后补充几点:
1.网站首页、频道页、分类页、栏目页等都是列表页,它的内容是由链接的锚文本构成的
2.url的写法设计最好与网站逻辑结构吻合,按照树型结构向下设计,目录层次深不影响seo的效果(根据网站自身情况而言),一切均以模拟用户逻辑思维来决定,并不存在用户需要越少次点击到达内容页越好的情况,或者可以从另一个角度去理解,记住:如果网站提供搜索功能,那每个页面我都可以用2次点击达到,根本不需要网站导航的存在,就好比你在google上搜索关键词一样,但我们却无法完全模拟用户的搜索行为。关注robots.txt
对于搜索引擎来讲它却是一个非常强大的东西,它可以说是你网站目录的“看护神”,可以用它来允许和禁止搜索引擎的搜录.
robots.txt基本介绍
robots.txt是一个纯文本文件,在这个文件中网站管理者可以声明该网站中不想被robots访问的部分,或者指定搜索引擎只收录指定的内容。
当一个搜索机器人(有的叫搜索蜘蛛)访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,那么搜索机器人就沿着链接抓取。
另外,robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。比如:abcdcnblogs.com/robots.txt.
robots.txt写作语法:
首先,我们来看一个robots.txt范例:abcdblog-design.cn/robots.txt
访问以上具体地址,我们可以看到robots.txt的具体内容如下:
#robots.txtfilefromabcdblog-design.cn
#allrobotswillspiderthedomainuser-agent:
disallow:以上文本表达的意思是允许所有的搜索机器人访问abcdblog-design.cn站点下的所有文件。
具体语法分析:其中#后面文字为说明信息;user-agent:后面为搜索机器人的名称,后面如果是,则泛指所有的搜索机器人;disallow:后面为不允许访问的文件目录。
下面,我将列举一些robots.txt的具体用法:
允许所有的robot访问
user-agent:
disallow:
或者也可以建一个空文件"/robots.txt"file
禁止所有搜索引擎访问网站的任何部分
user-agent:
disallow:/
禁止所有搜索引擎访问网站的几个部分(下例中的admin、user、files目录)
user-agent:
disallow:/admin/
disallow:/user/
disallow:/files/
禁止某个搜索引擎的访问(下例中的baiduspider)
user-agent:baiduspider
disallow:/
常见的搜索引擎机器人名称
搜索机器人名称url
baiduspiderabcdbaidu.com
scooterabcdaltavista.com
ia_archiverabcdalexa.com
googlebotabcdgoogle.com
inktomislurpabcdyahoo.com
fast-webcrawlerabcdalltheweb.com
slurpabcdinktomi.com
msnbotabcdsearch.msn.com
只允许某个搜索引擎的访问(下例中的baiduspider)
user-agent:baiduspider
disallow:
user-agent:
disallow:/
另外,robots也可以在meta标签内进行设置,下面来一些介绍:
robotsmeta标签则主要是针对一个个具体的页面。和其他的meta标签(如使用的语言、页面的描述、关键词等)一样,robotsmeta标签也是放在页面的<head></head>中,专门用来告诉搜索引擎robots如何抓取该页的内容。
robotsmeta标签的写法:
robotsmeta标签中没有大小写之分,name=”robots”表示所有的搜索引擎,可以针对某个具体搜索引擎写为name=”baiduspider”。content部分有四个指令选项:index、noindex、follow、nofollow,指令间以“,”分隔。
index指令告诉搜索机器人抓取该页面;
follow指令表示搜索机器人可以沿着该页面上的链接继续抓取下去;
robotsmeta标签的缺省值是index和follow,只有inktomi除外,对于它,缺省值是index,nofollow。
这样,一共有四种组合:
<metaname="robots"content="index,follow">
<metaname="robots"content="noindex,follow">
<metaname="robots"content="index,nofollow">
<metaname="robots"content="noindex,nofollow">
其中
<metaname="robots"content="index,follow">可以写成<metaname="robots"content="all">;
<metaname="robots"content="noindex,nofollow">可以写成<metaname="robots"content="none">
目前看来,绝大多数的搜索引擎机器人都遵守robots.txt的规则,而对于robotsmeta标签,目前支持的并不多,但是正在逐渐增加,如著名搜索引擎google就完全支持,而且google还增加了一个指令“archive”,可以限制google是否保留网页快照。例如:
<metaname="googlebot"content="index,follow,noarchive">
表示抓取该站点中页面并沿着页面中链接抓取,但是不在goolge上保留该页面的网页快照。
上面做了些简单的介绍,我们做网站时一定要加一个robots.txt在跟目录下,搜索引擎找到你网站后第一步就会找你的robots.txt看他是否有权限抓取。
ps:小经验分享
1.当你的程序防护措施不是很好的时候在robots.txt里面禁止搜索引擎搜录你的后台地址。
2.当你的网站是公司内部使用的web系统的时候不妨禁止所有搜索引擎访问来避免不需要的麻烦。
3.当你的网站刚刚架设起来,而可能会对网站架构有改动的时候,不妨暂时禁止所有搜索引擎搜录,让搜索引擎憋上一段时间。当你网站稳定后再把禁止取消,这时候你的网站会有一个更好的搜录效果。关注sitemap
sitemap应该分为两种一种是根据sitemap协议来制作,用来给搜索引擎抓取的协议性sitemap,而另外一种就是根据网站本身需求制作,用来给用户看的一个导航性sitemap。
协议性sitemap
sitemap0.90是依据创意公用授权-相同方式共享(attribution-sharealikecreativecommonslicense)的条款提供的,并被广泛采用,受google、yahoo!和microsoft在内的众多厂商的支持。
sitemap0.90是google、yahoo!、microsoft、ask等大多数搜索引擎所支持的一种标准。具体情况可以到abcdsitemaps.org/zh_cn/index.php查看。
下面我们就看下sitemap0.90的编写规则以<urlset>开始标记作为开始,以</urlset>结束标记作为结束。
在<urlset>标记中指定命名空间(协议标准)。
每个网址包含一个<url>条目作为xml父标记。
在每个<url>父标记中包含一个<loc>子标记条目。
下面是一个简单示例:
<?xmlversion="1.0"encoding="utf-8"?>
<urlsetxmlns="abcdsitemaps.org/schemas/sitemap/0.9">
<url>
<loc>abcdexample.com/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>abcdexample.com/contact/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
以下对可用xml标记进行说明。<url>必填每个网址条目的父标记。剩余标记为此标记的子标记。<loc>必填该页的网址。如果您的网络服务器需要网址的话,此网址应以协议开始(例如:http)并以斜杠结尾。该值必须少于2,048个字符。该文件上次修改的日期。此日期应采用w3cdatetime格式。如果需要,此格式允许省略时间部分,并使用yyyy-mm-dd。
请注意,此标记不同于服务器可返回的if-modified-since(304)标头,搜索引擎可能会以不同的方式使用这两个来源的信息。<changefreq>可选页面可能发生更改的频率。此值为搜索引擎提供一般性信息,可能与搜索引擎抓取页面的频率不完全相关。有效值为:alwayshourlydailyweeklymothlyyearly
never
“always”值应当用于描述随每次访问而改变的文档。而“never”值则应当用于描述存档的网址。
请注意,抓取工具会将此标记的值视为提示而不是命令。尽管搜索引擎抓取工具在做决定时会考虑此信息,但对于标记为“hourly”页面的抓取频率可能低于每小时一次,而对于标记为“yearly”页面的抓取频率可能高于每年一次。抓取工具也可能会定期抓取标记为“never”的网页,以便能够处理对这些网页的未预期更改。<priority>可选此网址的优先级是相对于您网站上其他网址的优先级而言的。有效值范围从0.0到1.0。该值不会影响您的网页与其他网站上网页的比较结果,而只是告知搜索引擎您认为哪些网页对抓取工具来说最为重要。
一个网页的默认优先级为0.5。
请注意,为网页指定的优先级并不会影响网址在搜索引擎结果页上的排名。搜索引擎在同一网站上选择不同网址时会使用此信息,因此,您可以使用此标记增加最重要的网页在搜索索引中显示的可能性。
另请注意,为网站中的所有网址都指定高优先级并不会带来什么好处。因为优先级是相对的,只用于在您网站的网址之间进行选择。由于篇幅关系,我这里关于sitemap0.90协议的编写规则就写这么多了具体关于实体转义、sitemap索引(一个网站多个sitemap)、sitemap位置等可以到abcdsitemaps.org/zh_cn/protocol.php#location查看。导航性sitemap
导航性sitemap,简单的说是属于一个站点导航器。把网站的各个节点按层级展现给用户,让用户能一目了然的看到这个网站的架构。在某种程度上在搜索引擎中起到了一个导航目录的内链建设作用。而展现的方式就因网站的不同而不同,这里就点到为止。
当然,asp.net有自己的一个sitemap,就是web.sitemap,他是属于一个代码性质的站点导航,在我的理解里他就好似一个导航性sitemap.还有google标准的sitemap等。所有的sitemap的目的只有一个那就是清晰的暂时网站的架构,无论是按共同标准建设,还是按某一搜索引擎标准建设,无论是代码体现还是视图展现,无论是给用户还是给搜索引擎都起着一个牵引的作用,属于网站的一个目录,非常有必要性。写网站时千万不要忘记给网站建设两个sitemap。
下面共享一个我用asp.net写的按照sitemap0.90协议生成sitemap.xml的简单示例:asp.net生成sitemap示例下载。
ps:个人建议,协议性的sitemap在网站初期比较适用,一旦数据量增加,搜索引擎收录稳定,就取消sitemap功能吧,不然有可能搜索不完全。不过,如果有特殊需要,例如,需要用到googlewebmaster中的查看链接等等。这些还是可以的。"nice"的网址是另一个重要的问题。而不是使用较长的网址包含许多查询参数,你应该使用的是作为静态网页的网址格式的网址。一些专家说,这是足够的,我不同意-这是不够的。请看下面两个网址。
somesite.com/index.php?op=content&act=view&id=100.htmlsomesite.com/content/view/100.html有意义的网址是好的网址,有一些游客的意义。我是说如果我给你有意义的网址,您可以找出您可能会在网页上找到该网址的后面。这里是以前的网址有意义的版本。
您可以使用网址为好喜欢urlrewritingnet.urlrewrite组件,同时也看到,有url映射iis7的支持,提供了mod_rewrite的你象特点(mod_rewrite的是非常受欢迎的apachehttp服务器模块)。
认识一些seo时常见的http状态码:
404:服务器找不到指定的资源,请求的网页不存在(譬如浏览器请求的网页被删除或者移位,但不排除日后该链接有效的可能性);
410:请求的网页不存在(注意:410表示永久性,而404表示临时性);
200:服务器成功返回请求的网页;
301:网址永久性重定向
302:网址临时性重定向
在搜索引擎看来最主要的应该是404错误了,404错误是代表网页不存在。当用户进入你域名下一个不存在的页面产生此错误,搜索引擎认为http错误,该页面不存在,如果太多的此类错误将会受到搜索引擎的处罚。
解决方案:
你可以在iis处设定404页面。
但.net有这更好的做法,在web.config的system.web里面只需要加
<customerrorsdefaultredirect="404.aspx"mode="on">
<errorstatuscode="404"redirect="404.aspx"/>
</customerrors>在asp.net3.5中可以这么写
<customerrorsdefaultredirect="404.aspx"redirectmode="responserewrite"mode="on">
<errorstatuscode="404"redirect="404.aspx"/>
</customerrors>
如果redirectmode属性设置为responseredirect,则将用户重定向到该错误页面,并且原始url更改为该错误页面的url。如果redirectmode属性设置为responserewrite,则将用户定向到错误页面,并且不更改浏览器中的原始url。
这样你就可以自定自己的错误页面啦
在seo过程中,301转向往往起着一定的作用。那现在我们来看看asp.net中怎么来设定301转向。
asp.net中的一个很简单的转向
response.redirect("abcdblog-design.cn/");//创建一个302转向到abcdblog-design.cn/
302转向(google能识别)虽然简单明了,对搜索引擎友好度却很差,搜索引擎只将它看作是一个临时的连接转移信息,这意味着它的目标可以改变每一个请求。当你需要转向的时候传递pr值,增加搜索引擎友好度,想把老的网站牵引到新网站的时候,你需要使用301转向。下面做一个简单的代码片段
response.clear();
response.statuscode=301;
response.appendheader("location","abcdblog-design.cn");
response.end();
301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的http数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。
作用就象下图:
相关转载参考如下: