自动转向(Auto-Redirecting),也叫自动重定向。自动跳转,指当访问用户登陆到某网站时,自动将用户转向其它网页地址的一种技术。转向的网页地址可以是网站内的其它网页,也可以是其它网站。通常情况下,浏览器会收到一个网页,该页面含有自动加载一其它网页的代码。该页面有可能在服务器端被转换,这样的话,浏览器只收到一个页面,而自动转向往往意味着浏览器收到的页面具有自动将访问用户送至其它页面的功能。
对自动转向技术(Auto-Redirecting)的合理应用包括:将用户转向到指定浏览器的网页版本;当网站的域名变更或删除后将人们转向到新域名下,等等。但现在这种技术却往往被搜索引擎优化人士用来作为提高网站的搜索引擎排名的一种手段。例如,先专门针对搜索引擎做一个高度优化的网页,也就是我们通常所说的“桥页”,然后把这个网页提交给搜索引擎来获得好的排名。但是,当搜索用户通过搜索引擎的搜索结果列表点击该网页列表进入后,将被自动转向到一个用户本来无意去访问的网站地址。搜索引擎常常认为自动转向的网页是对读者的误导,所以它会对这种网页或网站施以惩戒,不过对一些自动转向方法它目前还无法自动检测出来。
Meta Refresh Tag自动转向法
由于搜索引擎能够读取HTML,而Meta tags也是HTML,所以对于这种自动转向法,搜索引擎能够自动检测出来。因而无论网站的转向出于什么目的,都很容易被搜索引擎视做对读者的误导而受到惩罚。不过,如果跳转延迟时间设置合适,搜索引擎就不会视之为作弊。
页面定时刷新元标识(Meta Refresh Tag)只能放在HTML代码的< HEAD>区里。如下所示:
<meta http-equiv="refresh" content="10; url=http://www.williamlong.info/">
其中的“10”是告诉浏览器在页面加载5秒钟后自动跳转到url这个页面。
这种方法常可以在论坛中见到。如果在论坛上发信息,先会看到一个确认页面,几秒后会自动重新跳转回当前的论坛页面中。
从搜索引擎优化的角度出发,一般不希望自动转向有延迟。不过,如果是用Meta Refresh标识进行转向,一定要注意把延迟时间设定成至少10秒以上。
“javascript”自动转向法
由于不能解析javascript,所以搜索引擎无法察觉(自动检测到)用javascript脚本进行的自动转向。javascript自动重定向脚本可以放在网页的任何位置上,如果要求立即跳转,则可以将其放入网页源码的<head>区内的最上面。用javascript实现跳转的范例如下:
<script language="javascript"><!--location.replace("pagename.html")//--></script>
其中的“pagename.html”指特定的重定向目标地址,用相对/绝对URL地址均可。
用javascript实现自动重定向的好处在于:用户所访问的目标URL不会保留在用户浏览器的历史记录中,如果用户按返回按钮返回,则将回到跳转前的网页,而不是包含javascript自动重定向脚本的跳转页面,所以不会出现当用户点击返回按钮后返回至重定向页,然后该页自动跳转到用户本来想离开的那个页面的尴尬情形。
如果需要,可以把javascript自动重定向脚本存在一个外部文件中,并通过下面的命令行来加载,其中“filename.js”是该外部文件的路径和文件名:
<script language="javascript" src="filename.js"></script>
注意:若需实现即刻转向,或不希望人们看到转向前的那个页面,一般常用javascript脚本实现。在这种情况下应将javascript脚本放入HTML源码的<HEAD>区中。
表单(FORM)自动转向法
搜索引擎的“爬行”程序是不会填写表单的,所以它们也不会注意到提交表单,因而可以利用表单来实现自动转向(重定向)而不让搜索引擎察觉。
对于表单,人们往往很少意识到:表单的Action参数中包含的URL地址其实正是浏览器向服务器所请求的URL。浏览器将会通过向请求的URL地址增加一些格式为name=value的参数给予它以特殊的对待。在什么都没有的情况下,浏览器仍旧会为该URL安排请求至服务器。
用javascript脚本可让页面开始加载时即提交表单。下面是一个用javascript实现表单自动提交,以及提交表单的范例:
<script language="javascript"><!--document.myform.submit()//--></script>
<form name="myform" action="pagename.html" method="get"></form>
其中“myform”可以是任意名称,“pagename.html”用相对/绝对URL地址均可。
自动转向之301重定向
问题的提出
经常会碰到这样的情况,其他网站链接你的站点时,会用下面的链接:
- www.example.com
- example.com/
- www.example.com/index.html
- example.com/index.php
而这样导致:你站点主域名的pr值分散到其他几个URLs了。
如果你用301重定向把其他三个URL转到www.example.com,PR也就集中在主域名:www.example.com 了。
概念(来自百度百科)
页面永久性移走(301重定向)是一种非常重要的“自动转向”技术。网址重定向最为可行的一种办法。当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。
301永久重定向是所有的重定向方法中唯一符合搜索引擎规则的重定向方法,其他的重定向还包括302暂时重定向和JS跳转等,这些方式都容易导致URL不规范问题的产生。所以说如果你有多个域名都希望可以让他们访问同一个网站,那就只能将其中一个做为主域名,剩下的其他域名做301永久重定向到这个主域名,只有这样才可以完美的让多个域名都访问一个站点,不会产生重复收录,导致网站被惩罚的现象
301重定向具体办法:
1)设置.htaccess文件(只适用于linux系统,并需要虚拟主机支持。)
使访问example.com/的时候就会自动转到www.example.com 在.htaccess文件里写上以下代码即可。
RewriteEngine on
RewriteCond %{http_host} ^mydomain.com [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]
注意:URL标准化的301重定向(以上代码)需要写在其他URL-rewrite代码之前,如
<ifmodule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} blog.iflyhigher.tk$ [NC] RewriteRule ^(.*)$ http://blog.igevin.info/$1 [R=301,L] RewriteCond %{HTTP_HOST} iflyhigher.tk$ [NC] RewriteRule ^(.*)$ http://igevin.info/$1 [R=301,L] RewriteCond %{HTTP_HOST} moiya.tk$ [NC] RewriteRule ^(.*)$ http://igevin.info/$1 [R=301,L] </ifmodule>
2)适用于使用Unix网络服务器的用户
通过此指令通知搜索引擎的spider你的站点文件不在此地址下。这是较为常用的办法。
形如:Redirect 301 / http://www.williamlong.info/
3)在服务器软件的系统管理员配置区完成301重定向
适用于使用Window网络服务器的用户
4)绑定/本地DNS
如果具有对本地DNS记录进行编辑修改的权限,则只要添加一个记录就可以解决此问题。若无此权限,则可要求网站托管服务商对DNS服务器进行相应设置。
DNS服务器的设置
若要将blog.williamlong.info指向www.williamlong.info,则只需在DNS服务中应增加一个别名记录,可写成:blog IN CNAME www.williamlong.info。
如需配置大量的虚拟域名,则可写成:* IN CNAME www.williamlong.info.
这样就可将所有未设置的以williamlong.info结尾的记录全部重定向到www.williamlong.info上。
5)IIS 服务器实现301 重定向
打开IIS,右键-属性-网站-IP地址哪里点编辑增加一个站点,增加一个站点,绑定的一下主机头,也可以绑定多个闲置域名。如图所示:
打开IIS,首先新建立一个站点,随便对应一个目录E:\wwwroot\301web。该目录下只需要2个文件,一个 default.html,一个404.htm。在欲重定向的网页或目录上按右键;选中“重定向到URL”;在对话框中输入目标页面的地址;切记,记得选 中“资源的永久重定向”;当然,最后要点击“应用”,完成。如下图所示:
6)Apache 服务器实现301 重定向
在Apache 中,有个很重要的文件.htaccess,通过对它的设置,可以实现很多强大的功能,301 重定向只是其中之一。找到redirect permanent / http://lusongsong.com:
redirect permanent /old.html http://www.lusongsong.com:修改这句即可。
<VirtualHost *> ServerName [ URL ] www.bashui-seo.com[ /URL ] RewriteRule ^( . * ) $ [URL] http://www.bashui-seo.com/ $1[/URL] [ R=301, L ] </virtualHost>
或
<VirtualHost 219.133.X.X> Redirect / http://www.bashui-seo.com/ ServerName www.10flash.ne </VirtualHost>
7)用ASP/PHP实现301重定向:
ASP:
<% if request.ServerVariables("HTTP_HOST")="tzchb.com" then Response.Status="301 Moved Permanently" Response.AddHeader "Location","http://www.tzhcb.com/" Response.End end if %>
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.williamlong.info/" Response.End
如果你的网站默认主页是静态的index.html,就把默认主页设置成index.asp,因为动态页面才能实现301跳转
PHP:
header("HTTP/1.1 301 Moved Permanently"); header("Location:http://www.williamlong.info/"); exit();
< ?php $the_host = $_SERVER['HTTP_HOST']; $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; switch ($the_host) { case "www.iflyhigher.tk": case "iflyhigher.tk": $location = "Location: http://igevin.info" . $request_uri; break; case "blog.iflyhigher.tk": $location = "Location: http://blog.igevin.info" . $request_uri; break; case "www.moiya.tk": case "moiya.tk": $location = "Location: http://igevin.info"; break; default: $location = "Location: http://igevin.info"; break; } header('HTTP/1.1 301 Moved Permanently'); header($location); exit(); ?>
如果只要对一个域名进行重定向,可以把代码简化成下面的形式:
< ?php $the_host = $_SERVER['HTTP_HOST'];//取得进入所输入的域名 $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';//判断后面的请求部分 if($the_host !== 'igevin.info')//igevin.info是我现在的域名 { header('HTTP/1.1 301 Moved Permanently');//发出301头部 header('Location: http://igevin.info'.$request_uri);//跳转到我的新域名地址 exit(); } ?>
最后的exit()函数是一定要写的,我最初就没有写,结果只能重定向首页.
8)WordPress 301定向
在你的WordPress根目录下找到wp-blog-header.php文件,在第一个<?php 后面添加以下代码
if (strtolower($_SERVER['SERVER_NAME'])!='AAA.cn'){ $URIRedirect=$_SERVER['REQUEST_URI']; if(strtolower($URIRedirect)=="/index.php"){ $URIRedirect="/"; } header('HTTP/1.1 301 Moved Permanently'); header('Location:http://AAA.cn’.$URIRedirect); exit(); }
301重定向代码和测试工具
国外:http://www.seoconsultants.com/tools/headers
国内:http://www.ranknow.cn/tools/redirectcheck
优点:
301重定向可促进搜索引擎优化效果
从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法。当网站的域名发生变更后,搜索引擎只对新网址进行索引,同时又会把旧地址下原有的外部链接如数转移到新地址下,从而不会让网站的排名因为网址变更而收到丝毫影响。同样,在使用301永久性重定向命令让多个域名指向网站主域时,亦不会对网站的排名产生任何负面影响。
302重定向可影响搜索引擎优化效果
迄今为止,能够对302重定向具备优异处理能力的只有Google。也就是说,在网站使用302重定向命令将其它域名指向主域时,只有Google会把其它域名的链接成绩计入主域,而其它搜索引擎只会把链接成绩向多个域名分摊,从而削弱主站的链接总量。既然作为网站排名关键因素之一的外链数量受到了影响,网站排名降低也是很自然的事情了。
综上所述,在众多重定向技术中,301永久性重定向是最为安全的一种途径,也是极为理想的一款解决方案
小结
如果访问用户最终看到的是他们想看到的,那么在搜索引擎优化中使用自动转向技术并没有什么不对,也并不是什么不道德的行为。但有些人往往会在利用“自动跳转”技术,利用“桥页”吸引访问者,然后把他们送到他们无意浏览的页面或网站,这种做法只会引起访问用户的反感,又怎么能够期望访问流量可以有效转化为最终客户呢?