分享

什么是URL重写之URL重写优化

 红战袍 2011-09-30
什么是URL重写之URL重写优化
发布日期:2011-03-22 分类:网站运营

一、什么是URL标准化

  很多情况下,我们认为以下这几个链接都指向同一个页面(首页):
www.
/
www./index.html
/index.php

  但是从URL发送请求并返回网页内容的过程来看,这些URL都是互不相同的。对于上述URLs,Web服务器完全可以返回完全不同的内容。当这些URL所对应的内容都一样时(一般情况下都一样的),谷歌需要从上述URLs中选一个具有代表性的,而忽略其余的。那么这个被谷歌选择了的URL,就是一个标准化的URL。谷歌选择的这个过程称为“标准化”。

  谷歌是怎么URL标准化的?

  一般情况下,谷歌根据被外链的数量来判断。采用多的,则是标准化URL。

  我想告诉谷歌我想要的标准化URL,怎么办?

  可以采用301重定向进行URL标准化。

  二、如何把动态链接静态化

  这是SEO过程中最经常碰到的问题,也是必须解决的问题。因为搜索引擎喜欢静态页面。从Web服务器的角度,这个问题转变为:如何将静态化的文件名称转化成参数。

  需要两步来处理:

  1、把网页上带链接的地方,都换上新的静态化链接。搜索引擎和浏览器将通过该链接来发生请求。(有些人做修改不是在网页上,而是进行动态链接向静态链接的转向,这是严重错误的)

  2、在httpd.conf或.htaccess中使用RewriteRule:

  RewriteRule "^/dir/ ([^./]*) \.html" "/dir/script.cgi?doc=$1" [PT]

  [PT]标记告诉Apache执行后续的所有操作。

  通过这个功能,使动态页面以静态链接的形式展示给搜索引擎,从而达到URL优化的目的。如seowhy整站都是通过该方式实现。

  三、如何将效的URL重定向到其它页面

  很多时候,我们考虑把无效的URL比如:用户拼错的URL、不存在的URL重定向到别的网页,例如网站的首页、404页面等。

  在httpd.conf或.htaccess文件中使用ErrorDocument来捕获404 (找不到文件)错误:

  ErrorDocument 404 /index.html

  DirectoryIndex index.html /path/to/notfound.html

  本功能会让所有的404错误——每次当某人请求无效的URL 时,都返回URL / index.html 提供的网站首页。

  这里需要注意两点:

  1、直接指向首页是否是合适的?或者让它指向到一个404页面会更好些?如果在404页面用javasctrip做一个跳转到首页,也是SEO允许的做法。

  2、即使返回有效的文件,仍然会将404 状态码返回给客户端和搜索引擎。这表示搜索引擎机器人来确认网站上的链接时,仍然会得到正确的结果(404状态码)。关于状态码:详细请参考:网站常见状态码及IIS错误代码大全

  四、改版时如何保留原链接,创建新的URL

  具体操作办法(仅适用于apache网络服务器):

  文件位置:apache->conf->httpd.conf

  请在httpd.conf中使用Alias指令:Alias /newurl /www/htdocs/oldurl

  如:用户访问新的地址/newurl/id34.html 服务器将提供的内容原地址是/www/htdocs/oldurl/id34.html。

  注意:Alias只会改变本地URL,如/newurl/id34.html 的/newurl/id34.html 部分,而无法改变URL的主机名称部分(如:http://www./部分)。若要更改URL的主机名称部分,请使用Redirect或RewriteRule指令。

  菜鸟指南:本功能的Alias指令在 httpd.conf中是这一句: #Alias /webpath /full/filesystem/path 去掉前面的#,并做下相应的修改即可。

  SEO过程中一般在这些情况下需要用到该功能:

  1、当文件移动或文件目录名称发现改变,出于SEO需要,你需要保持旧的URL;

  2、网站改版了,网站导航和链接发生变化,为了继续持有原链接带来的流量,你需要保持旧的URL;

  3、你希望不同的人用不同URL来链接同一个的内容。(SEO一般不建议这样做)等等。。

  五、如何替换请求中的URL文字

  以下解决方案,仅适用于Apache服务器。

  在.htaccess文件中添加以下语句:
折叠展开PHP CodeRewriteCond %{REQUEST_URL} "string1"
RewriteRule "(.*)"string1(.*)" "$1string2$2" [N,PT]

  例如当客户端发出请求URL:/string1/abcstring1.html,则转换为目标URL:/string2/abcstring2.html。其中[N]标记告诉Apache重新执行重写规则,直到RewriteCond失效为止。只要请求URL中包含需要替换的字符串,它就会一直重复地执行。当所有的string1都被替换完毕,则RewriteCond失效。本例子中,RewriteCond执行了2次。[PT]告诉mod_rewrite把重写的URL传送到Apache来进行接下来的处理工作。

  我们都知道,关键字是否在URL中对于网站SEO至关重要。对于建站初期不注重SEO的站点,特别是大型站点,本功能真是雪中送炭。

  注意:使用本功能时,有时会把非目标字符也做了修改,假如例子中的“abcstring1”不是目标字符,但这个功能也会替换了它。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多