刚从电视得到的消息:微软全新中文搜索品牌“必应”正式发布。我想是取自有求必应的意思,与百度有异曲同工之妙。比当年谷歌取的名字好听多了。直到发稿为止 http://bing.com.cn还是登录不上去,不知道什么时候能正式的访问,先把LOGO帖出来大家欣赏一下。
网上关于Bing的歇后语和戏说马上就出来,真佩服大伙的文采啊,先摘录如下:
内事不问百度,外事不问谷歌,房事不问微软,因为有Bing(病)
怪不得微软,原来有BING啊?
微软有bing
今天你病(Bing)了吗
必应 必应 有求必应
经常有朋友问我如何才能成为SEO高手,怎样学习好SEO。大家急切的心情很容易理解。但是SEO不是简单几句话就能学会的,首先要知道什么是SEO。
SEO的技术文章在网上多如牛毛,只要你想找很快就能找到你需要的资料。可即使这样为什么SEO的门槛还是那么高呢?
网上的文章多是经验之谈,这也受SEO的行业性质所决定,因为搜索引擎不可能把算法透露给你,但这并不意味着你对SEO就会变得一片茫然。真正的SEO高手之路就是实践实践再实践的过程,怪不得经常有人问我,我在博客发表的文章为什么那么深奥难懂,问这样话的人一般都是刚接触SEO不久,他们看到的SEO秘籍都是别人的经验之谈主要“猜”的成分比较多。当然我写文章之前也借鉴别人的文章,不同的是我用技术的方法去还原这个经验,用实验数据去说话,这就是我在什么是SEO文章中强调的,SEOer必须会程序的原因,因此可以说我的每篇文章都是我大量试验的成果。
所以大家不要奢望通过几篇文章就能学会SEO,而是不断的通过创建实验模型来完善自己的SEO知识。
什么是SEO呢?搜索引擎优化(Search Engine Optimization)不是知道几条经验,不是会罗列几个关键词,不是搞搞TITLE META 标签就算是会SEO了。那么什么才是真正的SEO呢?怎么样才能学习好SEO呢?并成为SEO高手呢?
我来谈谈我认为的SEOer:
首先SEO必须懂技术,最少会一中网页编程语言,懂得服务器设置和网络安全等。可以说不懂技术的SEO不能称为真的SEOer。
其次SEO必须学过或有营销经验,现实中的营销理论和实践在网络中同样适用,通常被称为搜索引擎营销(SEM)或叫网络营销。
再有SEO必须有敏锐的洞察力和一定的文学功底,我经常遇到这样的案例,网站优化做的非常好,也从搜索引擎带来了不少流量,但是IP的转化率确实特别低,经分析发现主要是引文网站首页和分类页罗列堆砌了大量的关键词,前后语义词不达意,访客根本找不到他所需要的技术文章,往往点开网页后迅速离开。
对已经排名很好的站点,不要做各种优化试验,否则后果不堪设想。千万别得瑟,千万别“手欠”。
举个例子ss7.0系统的提供为静态短url,当你设定扩展名.html时候,百度会对同一分类抓取两个url一个是/category-1 另一个是/category-1.html如果这两个你都取得好的排名了,就不要屏蔽掉其中一个,放在那随它去吧。
“手欠”的事情在一个成熟的SEOer身上倒是很少会发生,多在程序员和美工身上发生,如CMS的版本升级、不断的更改页面的布局等。
那是不是说我们不需要对网站再做修改呢?对网站不断进行针对搜索引擎优化的调整是必不可少的,但是一定要有计划性的有说服力的方案,否则不要轻举妄动。
搜索引擎的算法中有一种叫做“沙盒效应”。举一个我遇到的例子,对一个网站提出合理的SEO建议并付诸实施后,百度在头几天对该站的快照突然退到了以前的存档快照中,最新更新的快照没有了,就在今天新的快照终于放了出来,而令人兴奋的是快照是被优化后的页面,并且以前从没排上的关键词都排上了。
这样的沙盒效应周期还算短的,有许多网站长时间被放在沙盒中,这时你就要检查网站是否在存在一些优化问题。
在网上找了好久也没找到一个能说得明白的文章。自己找了下资料并且实际操作了一下利用.htaccess改写Rewrite规则达到域名301重定向目的。较之之前《域名在搜索引擎中的优化》中使用域名控制面板实现URL转向要更好一些,使搜索引擎将原网址页面的权重都转移到最终网址,不影响搜索引擎排名。
假设你有域名abc.com和www.abc.com现在需要将前一域名重定向到后一个域名上,以后访问abc.html的时候地址栏直接显示www.abc.html 这个域名。
具体.htaccess的书写如下:
RewriteCond %{HTTP_HOST} ^abc.com$ [NC]
RewriteRule ^(.*)$ http://www.abc.com/$1 [L,R=301]
redirect 301 /old.htm http://www.domain.com/new.html(将旧网页重定向到新网页上)
最后记得.htaccess这个文件是放在abc.com的根目录中。
301重定向在灰帽子的用法就是欺骗搜索引擎。
就是将PR值较高的站重定向到需要优化的站上来。
Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操作机制。此URL操作可以依赖于各种测试,比如服务器变量、环境变量、HTTP头、时间标记,甚至各种格式的用于匹配URL组成部分的查找数据库。
此模块可以操作URL的所有部分(包括路径信息部分),在服务器级的(httpd.conf)和目录级的(.htaccess)配置都有效,还可以生成最终请求字符串。此重写操作的结果可以是内部子处理,也可以是外部请求的转向,甚至还可以是内部代理处理。
这里着重介绍一下 RewriteRule 的规则以及参数说明。RewriteRule指令是重写引擎的根本。此指令可以多次使用。每个指令定义一个简单的重写规则。这些规则的定义顺序尤为重要——在运行时,规则是按这个顺序逐一生效的。
RewriteRule Pattern Substitution [flags]
Pattern是一个作用于当前URL的perl兼容的正则表达式。”当前URL”是指该规则生效时刻的URL的值。它可能与被请求的URL截然不同,因为其他规则可能在此之前已经发生匹配并对它做了改动。
Substitution是当原始URL与Pattern相匹配时,用来替代(或替换)的字符串。除了纯文本,还可以包含:
对Pattern的反向引用($N)
对最后匹配的RewriteCond的反向引用(%N)
规则条件测试字符串(%{VARNAME})中的服务器变量
映射函数调用(${mapname:key|default})
[flags]标记作为RewriteRule指令的第三个参数,是一个包含以逗号分隔的下列标记的列表:
‘chain|C’(链接下一规则)
此标记使当前规则与下一个规则相链接。它产生这样的效果:如果一个规则被匹配,则继续处理其后继规则,也就是这个标记不起作用;如果该规则不被匹配,则其后继规则将被跳过。比如,在一个目录级规则中执行一个外部重定向时,你可能需要删除”.www”(此处不应该出现”.www”)。
‘cookie|CO=NAME:VAL:domain[:lifetime[:path]]’(设置cookie)
在客户端设置一个cookie。cookie的名称是NAME,值是VAL。domain是该cookie的域,比如’.apache.org’,可选的lifetime是cookie的有效期(分钟),可选的path是cookie的路径。
‘env|E=VAR:VAL’(设置环境变量)
此标记将环境变量VAR的值为VAL,VAL可以包含可扩展的正则表达式反向引用($N和%N)。此标记可以多次使用以设置多个变量。这些变量可以在其后许多情况下被间接引用,通常是在XSSI(<!–#echo var=”VAR”–>)或CGI($ENV{‘VAR’})中,也可以在后继的RewriteCond指令的CondPattern参数中通过%{ENV:VAR}引用。使用它可以记住从URL中剥离的信息。
‘forbidden|F’(强制禁止URL)
强制禁止当前URL,也就是立即反馈一个HTTP响应码403(被禁止的)。使用这个标记,可以链接若干个RewriteConds来有条件地阻塞某些URL。
‘gone|G’(强制废弃URL)
强制当前URL为已废弃,也就是立即反馈一个HTTP响应码410(已废弃的)。使用这个标记,可以标明页面已经被废弃而不存在了。
‘handler|H=Content-handler’(强制指定内容处理器)
强自制定目标文件的内容处理器为Content-handler。例如,用来模拟mod_alias模块的ScriptAlias指令,以强制映射文件夹内的所有文件都由”cgi-script”处理器处理。
‘last|L’(结尾规则)
立即停止重写操作,并不再应用其他重写规则。它对应于Perl中的last命令或C语言中的break命令。这个标记用于阻止当前已被重写的URL被后继规则再次重写。例如,使用它可以重写根路径的URL(‘/’)为实际存在的URL(比如:’/e/www/’)。
‘next|N’(从头再来)
重新执行重写操作(从第一个规则重新开始)。此时再次进行处理的URL已经不是原始的URL了,而是经最后一个重写规则处理过的URL。它对应于Perl中的next命令或C语言中的continue命令。此标记可以重新开始重写操作(立即回到循环的开头)。但是要小心,不要制造死循环!
‘nocase|NC’(忽略大小写)
它使Pattern忽略大小写,也就是在Pattern与当前URL匹配时,’A-Z’和’a-z’没有区别。
‘noescape|NE’(在输出中不对URI进行转义)
此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。 一般情况下,特殊字符(‘%’, ‘$’, ‘;’等)会被转义为等值的十六进制编码(‘%25′, ‘%24′, ‘%3B’等)。此标记可以阻止这样的转义,以允许百分号等符号出现在输出中,比如:
RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]
可以使’/foo/zed转向到一个安全的请求’/bar?arg=P1=zed’。
‘nosubreq|NS’(不对内部子请求进行处理)
在当前请求是一个内部子请求时,此标记强制重写引擎跳过该重写规则。比如,在mod_include试图搜索目录默认文件(index.xxx)时,Apache会在内部产生子请求。对于子请求,重写规则不一定有用,而且如果整个规则集都起作用,它甚至可能会引发错误。所以,可以用这个标记来排除某些规则。
使用原则:如果你为URL添加了CGI脚本前缀,以强制它们由CGI脚本处理,但对子请求处理的出错率(或者资源开销)很高,在这种情况下,可以使用这个标记。
‘proxy|P’(强制为代理)
此标记使替换成分被内部地强制作为代理请求发送,并立即中断重写处理,然后把处理移交给mod_proxy模块。你必须确保此替换串是一个能够被mod_proxy处理的有效URI(比如以http://hostname开头),否则将得到一个代理模块返回的错误。使用这个标记,可以把某些远程成分映射到本地服务器域名空间,从而增强了ProxyPass指令的功能。
注意:要使用这个功能,必须已经启用了mod_proxy模块。
‘passthrough|PT’(移交给下一个处理器)
此标记强制重写引擎将内部request_rec结构中的uri字段设置为filename字段的值,这个小小的修改使得RewriteRule指令的输出能够被(从URI转换到文件名的)Alias, ScriptAlias, Redirect等指令进行后续处理[原文:This flag is just a hack to enable post-processing of the output of RewriteRule directives, using Alias, ScriptAlias, Redirect, and other directives from various URI-to-filename translators.]。举一个能说明其含义的例子: 如果要将/abc重写为/def, 然后再使用mod_alias将/def转换为/ghi,可以这样:
RewriteRule ^/abc(.*) /def$1 [PT] Alias /def /ghi
如果省略了PT标记,虽然将uri=/abc/…重写为filename=/def/…的部分运作正常,但是后续的mod_alias在试图将URI转换到文件名时会遭遇失效。
注意:如果需要混合使用多个将URI转换到文件名的模块时,就必须使用这个标记。。此处混合使用mod_alias和mod_rewrite就是个典型的例子。
‘qsappend|QSA’(追加查询字符串)
此标记强制重写引擎在已有的替换字符串中追加一个查询字符串,而不是简单的替换。如果需要通过重写规则在请求串中增加信息,就可以使用这个标记。
‘redirect|R [=code]‘(强制重定向)
若Substitution以http://thishost[:thisport]/(使新的URL成为一个URI)开头,可以强制性执行一个外部重定向。如果没有指定code,则产生一个HTTP响应码302(临时性移动)。如果需要使用在300-400范围内的其他响应代码,只需在此指定即可(或使用下列符号名称之一:temp(默认), permanent, seeother)。使用它可以把规范化的URL反馈给客户端,如将”/~”重写为”/u/”,或始终对/u/user加上斜杠,等等。
注意:在使用这个标记时,必须确保该替换字段是一个有效的URL。否则,它会指向一个无效的位置!并且要记住,此标记本身只是对URL加上http://thishost[:thisport]/前缀,重写操作仍然会继续进行。通常,你还会希望停止重写操作而立即重定向,那么就还需要使用’L'标记。
’skip|S=num’(跳过后继规则)
此标记强制重写引擎跳过当前匹配规则之后的num个规则。它可以模拟if-then-else结构:最后一个规则是then从句,而被跳过的skip=N个规则是else从句。注意:它和’chain|C’标记是不同的!
‘type|T=MIME-type’(强制MIME类型)
强制目标文件的MIME类型为MIME-type,可以用来基于某些特定条件强制设置内容类型。比如,下面的指令可以让.php文件在以.phps扩展名调用的情况下由mod_php按照PHP源代码的MIME类型(application/x-httpd-php-source)显示:
RewriteRule ^(.+\.php)s$ $1 [T=application/x-httpd-php-source]
我在利用robots.txt文件优化一例一文提到了使用robots.txt对网站重复内容进行屏蔽,让蜘蛛不爬行。现在来看一天就出现了效果。排列三预测 这个词昨天在百度还搜索不到呢,(曾经排在第一页),今天发现排列三预测这个词已经排在百度的第五页了。在使用robots.txt的同时,我也仔细检查了下网站对于/aurl这个URL进行了查找并修改了任何可能指向这个域名的网页。现在一切OK了。说利用明robots.txt过滤重复网页的优化方法还是可行的。
最近网站总被攻击流量有所影响,等过阵子稳定后,如法炮制在整理一下其他的词上去。
对网站遭受的攻击今天想到了一个方法,现在我一直再盯着服务器观察方法可行性,改天再上来写日志总结下。
手上有一个站 排列三预测 这个词几天前还排在第一页,但是今天看百度发现掉了下来,仔细检查了一下原来是URL命名问题,因为以前使用RWRITE规则问题生成了两个页面一个/aurl和/aurl.html 后来一直使用后者排名也挺好的,但搜索引擎把这两个都搜录了,想了一个办法用robots.txt让蜘蛛不搜索/aurl这个页
下面是具体操作非常简单:
User-agent: *
Disallow:/aurl
现在的问题是蜘蛛会不会把它当成一个目录还不是一个网页进行屏蔽呢?过些日子看效果吧。
现在有一种误区认为,执行W3C标准是为了迎合搜索引擎进而带来更多的流量。其实W3C标准根本目的是增加用户访问体验,只有对用户友好了才能对搜索引擎友好。换种角度来讲搜索引擎尽量使自己的程序与用户的访问体验相接近。
知道这些就不难理解为什么在W3C标准中提倡使用层模型而不是用表格。当你写文章的时候你是使用word还是excel呢?大家都不会选择制表记录数据的excel,同样的道理在html语言中table是用来存放数据的,当然你就不能用它来放文字。
当你在网页中使用了table标签的时候就是告诉访问者和搜索引擎你将要在表格中展现一系列的数据来阐述你要说明的东西,但搜索引擎在表格中没有找到数据而是文字,其结果会怎么样?
其实结果不会很严重,现在大部分的网页还是在table标签里存放文字段落,当然不影响搜索引擎收录。但同一文本使用table标签和使用w3c标准的一系列标签,其在搜索结果效果肯定是有好坏之分。
搜索引擎会尽量模仿人的阅读习惯去搜索网页。比如我对www.jsgxgsw.com.cn这个站的诊断之一(当然还有很多问题,现在只说其中之一)通常一篇文章的结构如下
<h1>一级标题</h1>
<h2>二级标题</h2>
<p>文章内容1</p>
<p>文章内容2</p>
在这个基础上可以进一步完善,比如在标题下面是用<ul><li>标签列出相关的文章列表,在段落里使用<br/><strong>等标签。总之让搜索引擎阅读起来具有一般文章的条理性。
而对上面提到的网站修改意见就是将头部的图片换成背景图片,将文字放在前面使用<h1>标签,不要使用FLASH技术或java脚本的一些特效。
另外在文章中部和底部有明显的堆砌关键字行为,这在以后的文章在给大家分析。
大家在制作网站时候可以使用www.w3c.org对网页进行校验,使自己的网页趋于标准。
总之尽量让网页的调理清晰,便于阅读,少使用图片和FLASH或脚本技术,客户来到你的网站能迅速获取所需要的东西,那么同样对于搜索引擎也是获得了一次好的搜索体验。