搜索引擎优化魔法书-第22部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
一般网页的核心信息最好不要放置在这些不友好元素中,以防搜索引擎不能成功进行索
引。这些核心信息包括带有该页面核心关键词的文本区域以及相关辅助信息,诸如重要导航,
相关导航和文章正文。
而那些内容描述与核心信息的相关性相去甚远的信息就建议放置在 IFRAME 、
第73 页
… Page 82…
搜索引擎优化魔法书 SEO Magic Book 浩维互动免费电子书 timev
JavaScript、AJAX 中,因为它们会对核心信息起到干扰。可以放置于搜索引擎不友好因素中
的信息包括网站尾部的辅助导航、版权信息和页面的广告信息等。
一、IFRAME
框架结构或称帧结构(Frame )网页表现为一个网页内的某一块保持固定,其它部分信
息可以通过滚动条上下或左右移动显示。框架型网页的另一个表现是,深层页面的域名通常
不会在URL 中体现出来,即使进入深层子页面,浏览器显示出来的URL 仍是主页的URL 。
它的好处是:页面整体一致,更新方便。但大多搜索引擎无法识别框架,也没兴趣抓取其中
内容。某些浏览器不支持框架页面。
如使用框架,必须在代码中使用“Noframes ”标签进行优化,把Noframe 标签看作一个
普通文本内容的主页。在区域中包含指向frame 页的链接以及带有关
键词的描述文本。同时在框架以外的区域也出现关键词文本。这样搜索引擎才能正确索引到
框架内信息。
还有一个办法是采用iframe 即内联框架(Inner Frame)技术来避免Frame 带来的不便。
所谓 iframe 也是框架的一种形式,它是相当于在主浏览器窗口内嵌一个子窗口,内容自动
打开。Iframe 可以嵌在网页中的任意部分,也可以随意定义其大小,其代码显示为:
对搜索引擎来说,iframe 中的文字是可见的,也可以跟踪到其中链接指向的页面,不过
与用户所见不同的是,搜索引擎将 iframe 内容看成单独的一个网面内容,与被内嵌的页面
无关。
二、JS
由于JS 的内容不能被大多数搜索引擎检索,所以做网站的SEO 时一般强调导航菜单等
重要的代码部分尽量不使用JS。
部分网页左侧、右侧的相关文章、热门文章链接等,喜欢使用 JS 来调用。这又是一个
JS 产生的问题。如果大面积的链接都使用JS,无疑将大大降低搜索引擎抓取收录的机会。
正常情况下,网页尽量以作为代码开始端。但采用JavaScript 技术的网页往往在
页面一开始就堆积大量java 代码,以致meta 及关键词迟迟不能出现,被推至页面底部,对
搜索引擎很不友好。
两种方法改善:
将脚本移至页面底部 大部分 java 代码可移到页面结束标签之上,从而不影响网站功
能。
将 java 脚本置入一个。js 扩展名的文件 包含你的javascript 的。js 文件通常在网站访问
者的浏览器中被缓存下来,使得下次访问速度加快,也使网站修改和维护更加方便。
三、AJAX
AJAX 是异步 JavaScript 和 XML 的缩写形式,是一种网站互动应用开发技术,其直接
效果是用户无加载一次,网页也可以实现页面内容刷新,由此极大提升速度和用户体验。
不过AJAX 技术在搜索引擎优化方面被完全归入“糟糕”一类效果,因为搜索引擎不支
第74 页
… Page 83…
搜索引擎优化魔法书 SEO Magic Book 浩维互动免费电子书 timev
持 JavaScript,而AJAX 是使用 JavaScript 发挥作用,因此搜索引擎机器人看不到 AJAX 发
送的内容。比如,如果一个网站导航采用AJAX 技术制作,那么搜索引擎无法通过导航系统
深入抓取该网站首页以外的其它链接页面,同样,如果网页内容由AJAX 生成,也无法为搜
索引擎识别。
使用 AJAX 技术制作网站该如何兼顾用户体验的高效与搜索引擎优化呢?最简单的答
案是确保导航与正文主体内容这两部分最核心的内容是 html 文件,这不仅有助于提升网站
的搜索引擎可见度,还确保那些没有启用JavaScript 的用户也能看到导航条内容和链接。以
国际品牌Gucci 为例,这个外观时尚新潮的网站制作几乎破坏了搜索引擎优化的所有规
范,并且如果浏览器不支持JavaScript,则所见完全一片空白。
第六节 URL 设计
URL 其英文完整拼写是 Uniform Resource Locator,中文翻译意思为“统一资源定位系
统”,也就是我们经常所说的网站地址。面向访问用户和搜索引擎友好的URL 设计必须要考
虑三个方面的要求:便于用户记忆、URL 静态化和部署关键词。
一、便于用户记忆
URL 的设计是否对于用户友好,这也是我们必须考虑的。我们会经常看到很多站点内
容页面的URL 是一长串令人捉摸不透的数字和字母组合,很不便于用户记忆。
我们给出的设计便于记忆的URL 的建议是:根据访问用户的语言环境和文化素质情况
而灵活采用英文或者汉语拼音,然后再加上有规律的数字组合来设计URL 。
二、URL 静态化
搜索引擎对静态的 URL 索引效率更高,这一点是在其对网站管理员的帮助指南里都有
明确指出过。所以,在架构网站的时候采取静态页面架构或者实现动态URL 伪静态化无疑
是对搜索引擎友好的方法。
一般来说,中小型网站由于其信息量不多,维护起来也比较方便,大多都采用静态HTML
页面来构建。而对于大型网站来,由于信息量大,它们大都采用了CMS (Content Management
System)来搭建网站,因为其架构安装和管理都比较方便。
但是,大部分的 CMS 系统开发商并没有考虑到 URL 静态化对于搜索引擎友好的重要
性,这些系统生成的页面URL 都是带有参数变量的动态形式。
1、动态URL 的伪静态化处理
已经是动态URL 的站点如何实现URL 静态化呢?
实现方式主要有2 种:基于url rewrite 和基于path_info。
把 URI 地址用作参数传递:URL REWRITE
最简单的是基于各种WEB 服务器中的URL 重写转向(Rewrite )模块的URL 转换,这
样几乎可以不修改程序,就能够实现将news。asp?id=234 这样的链接映射成news/234。html,
从外面看上去和静态链接一样。Apache 服务器上有一个模块(非缺省):mod_rewrite:URL
第75 页
… Page 84…
搜索引擎优化魔法书 SEO Magic Book 浩维互动免费电子书 timev
REWRITE。
当需要将news。asp?id=234 的映射成news/234。html 时,只需设置:
RewriteRule /news/ (d+ )。html /news。asp?id=1 'N,I'
这样就把 /news/234。html 这样的请求映射成了 /news。asp?id=234
当有对/news/234。html 的请求时:web 服务器会把实际请求转发给/news。asp?id=234
而在IIS 也有相应的REWRITE 模块:比如ISAPI REWRITE 和IIS REWRITE,语法都
是基于正则表达式,因此配置几乎和apache 的mod_rewrite 是相同的。
比对于某一个简单应用可以是:
RewriteRule /news/ (d+ )。html /news/news。php?id=1 'N,I'
这样就把 chedong/news/234。html 映射到了:
chedong/news/news。php?id=234
一个更通用的能够将所有的动态页面进行参数映射的表达式是:
把myhost/foo。php?a=A&b=B&c=C
表现成myhost/foo。php/a/A/b/B/c/C。
RewriteRule (。*?。php)(?'^/'* )?/ ('^/'*)/ ('^/'*)(。+?)?1 (?22&:?)3=4?55:
'N,I'
以下是针对phpBB 的一个Apache mod_rewrite 配置样例:
RewriteEngine On
RewriteRule /forum/topic_ (。+)。html /forum/viewtopic。php?t=1 'L'
RewriteRule /forum/forum_ (。+)。html /forum/viewforum。php?f=1 'L'
RewriteRule/forum/user_ (。+)。html /forum/profile。php?mode=viewprofile&u=1 'L'
这样设置后就可以通过topic_1234。html forum_2。html user_34。html 这样的链接访问原来
的动态页面了。
通过URL REWRITE 还有一些好处:
隐藏后台实现 这在后台应用平台的迁移时非常有用:当从asp 迁移到java 平台时,
对于前台用户来说,根本感受不到后台应用的变化;
简化数据校验 因为像(d+)这样的参数,可以有效的控制数字的格式甚至位数;
比如我们需要将应用从news。asp?id=234 迁移成news。php?query=234 时,前台的表现可
以一直保持为 news/234。html 。从实现应用和前台表现的分离:保持了URL 的稳定性,而使
用mod_rewrite 甚至可以把请求转发到其他后台服务器上。
基于 PATH_INFO 的URL 美化
URL 美化的另外一个方式就是基于PATH_INFO:PATH_INFO 是一个CGI 1。1 的标准,
经常发现很多跟在 CGI 后面的〃/value_1/value_2〃 就是 PATH_INFO 参数,比如:
phpunixman。sourceforge/index。php/man/ls 中:PATH_INFO = 〃/man/ls〃
PATH_INFO 是 CGI 标准,因此 PHP Servlet 等都有的支持。比如 Servlet 中就有
request。getPathInfo ()方法。
第76 页
… Page 85…
搜索引擎优化魔法书 SEO Magic Book 浩维互动免费电子书 timev
注意:/myapp/servlet/Hello/foo 的getPathInfo ()返回的是/foo,而/myapp/dir/hello。jsp/foo
的 getPathInfo ()将返回的 /hello。jsp,从这里你也可以知道 jsp 其实就是一个 Servlet 的
PATH_INFO 参数。ASP 不支持PATH_INFO。
PHP 中基于PATH_INFO 的参数解析的例子如下:
注意:参数按〃/〃分割,第一个参数是空的:从/param1/param2 中解析出param1 param2
这2 个参数。
if ( isset (_SERVER'〃PATH_INFO〃') ) {
list (nothing; param1; param2) = explode ('/'; _SERVER'〃PATH_INFO〃');
}
如何隐蔽应用:例如 。php 的扩展名:
在APACHE 中这样配置:
ForceType application/x…httpd…php
如何更像静态页面:app_name/my/app。html?
解析的PATH_INFO 参数的时候,把最后一个参数的最后 5 个字符“。html”截断即可。
注意:APACHE2 中缺省是不允许PATH_INFO 的,需要设置 AcceptPathInfo on
特别是针对使用虚拟主机用户,无权安装和配置 mod_rewrite 的时候,PATH_INFO 往
往就成了唯一的选择。
OK,这样以后看见类似于example/article/234 这样的网页你就知道可能
是 article/show。php?id=234 这个php 程序生成的动态网页,很多站点表面看上去可能有很多
静态目录,其实很有可能都是使用 1,2 个程序实现的内容发布。比如很多WIKIWIKI 系统
都使用了这个机制:整个系统就一个简单的 wiki 程序,而看上去的目录其实都是这个应用
拿后面的地址作为参数的查询结果。
利用基于MOD_REWRITE/PATH_INFO + CACHE 服务器的解决方案对原有的动态发
布系统进行改造,也可以大大降低旧有系统升级到新的内容管理系统的成本。并且方便了搜
索引擎收录入索引。
附:如何在IIS 上利用PHP 支持PATH_INFO
PHP 的ISAPI 模式安装备忘:只试成 php…4。2。3…Win32
解包目录
php…4。2。3…Win32。zip c:php
PHP。INI 初始化文件
第77 页
… Page 86…
搜索引擎优化魔法书 SEO Magic Book 浩维互动免费电子书 timev
复制:c:phpphp。ini…dist 到 c:winntphp。ini
配置文件关联
按照install。txt 中的说明配置文件关联
运行库文件