路由选择的变化也是对数据报文经由
路径的一种重定向。
在我们
网站建设中
,时常会遇到需要网页重定向的情况
:像网站调整
,改变了网站的
目录结构
,网页被移到一个新地址。或者网页扩展名改变
,如因应用需要把.php改成.Html或.
shtml
,在这些情况下
,如果不做重定向
,则用户收藏夹或
搜索引擎
数据库中旧地址只能让访问客户得到一个404
页面错误信息
,访问流量白白丧失。又比如某些注册了多个域名的网站
,也需要通过重定向让访问这些域名的用户自动跳转到主站点
,等等。
常用的重定向方式有: 301 redirect, 302 redirect 与 me
ta fresh
:
301 redirect:
:301代表永久性转移(Permanently Moved)
,301重定向是网页更改地址后对
搜索引擎友好的最好方法
,只要不是暂时搬移的情况
,都建议使用301来做转址。
302 redirect:
:302代表暂时性转移(Temporarily Moved )
,在前些年
,不少Black Hat SEO曾广泛应用这项技术作弊。目前
,各大主要搜索引擎均加强了打击力度
,像Google前些年对business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是
spam
,也很容易被搜寻引擎误判为spam而遭到惩罚。
me
ta fresh
: 这在2000年前比较流行
,不过现在已很少见。它具体是通过网页中的me
ta指令
,在特定时间后重定向到新的网页
,如果延迟的时间太短(约5秒之内)
,会被判断为spam。
* 打开internet信息
服务管理器
,在欲重定向的网页或目录上按右键
,选择“重定向到URL”
,
* 此处以重定向到百度为例
* 在“重定向到”输入框中输入要跳转到的目标网页的URL地址
* 选中“资源的
永久重定向”
(切记
)
* 最后点击“应用”
相比较来说
,Apache实现起来要比IIS简单多了。在Apache中
,有个很重要的文件.htaccess
,通过对它的设置
,可以实现很多强大的功能
,301重定向只是其中之一。
redirect permanent /index.php http://www.domain.com/index.php?go
=category_6(将网页index.php重定向到http://www.domain.com/index.php?go
=category_6)
通过合理地配置重定向参数中的
正则表达式
,可以实现更复杂的匹配。有兴趣的朋友可参考本站Apache手册。
<html>
<head>
<title>HTTP/1.1 301 Moved Permanently</title>
<?
Header(
"HTTP/1.1 301 Moved Permanently
" );
Header(
"Location: www.domain.com
" );
?>
</head>
<body>
HTTP/1.1 301 Moved Permanently
</body>
</html>
[1]
<%
@ Language
=VBs
cript %>
<%
Response.Status
=
"301 Moved Permanently
"
Response.AddHeader
"Location
",
"http://www.domain.com
"
%>
<s
cript runat
=
"server
">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status
=
"301 Moved Permanently
";
Response.AddHeader (
"Location
",
"http://www.domain.com
");
}
</s
cript>
<.cfheader statuscode
=
"301
" statustext
=
"Moved permanently
">
<.cfheader name
=
"Location
" value
=
"http://www.domain.com
"> 旧
域名重定向到新域名
创建一个.htaccess文件
,并将下面提供的代码写入文件内
,它可以确保旧域名所有的目录或者网页正确的跳转到新域名内。
记住.htaccess文件一定要放在旧网站的根目录下
,并且新网站要和旧网站保持相同的
目录结构及网页文件。
Options
+FollowSyml
inks
RewriteEngine on
RewriteRule (.*) http://www.domain.com/$1 [R
=301,L]
请将上面的www.domain.com修改成你想要跳转到的域名。
此外
,我建议大家归总旧网站的外部链接
,并联系相应的站点修改导入链链的URL
,以指向新站点。
注意
:.htaccess文件只有在使用安装有Mod Rewrite模块的Apache作为WEB服务器的Linux
主机上才能起作用。
首先要知道
,www.domain.com是domain.com域下的一个二级域名。
301跳转到www二级域的实现方式
:
创建一个.htaccess文件
,并将下面提供的代码写入文件内
,它可以确保所有来自对domain.com的请求都转向到对www.domain.com进行请求。记住.htaccess文件一定要放在旧网站的根目录下
,并且新网站要和旧网站保持相同的目录结构及网页文件。
Options
+FollowSyml
inks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R
=301]
请将上面的domain.com和www.domain.com修改成你想要跳转到的域名。
注意
:.htaccess文件只有在使用安装有Mod Rewrite模块的Apache作为WEB服务器的Linux主机上才能起作用。
如果网站根目录没有web.config就新建一个
文本文档
,保存成web.config即可
,代码如下
:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name
=
"WWW Redirect
" stopProcessing
=
"true
">
<match url
=
".*
" />
<conditions>
<add input
=
"{HTTP_HOST}
" pattern
=
"^domain.com$
" />
</conditions>
<action type
=
"Redirect
" url
=
"http://www.domain.com/{R:0}
"
redirectType
=
"Permanent
" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
将此web.config上传到网站根目录即可。别忘了把上面的domain.com换成你的域名哦
!
前提条件是
:window
主机的IIS版本必须是7.0或以上的。
这里以
Z-Blog为例详细介绍一下
:
1. 复制如下代码
,将代码中“###.com”改成你自己的网址。
if request.ServerVariables(
"SERVER_NAME
")
=
"###.com
" then
Response.Status
=
"301 Moved Permanently
"
Response.AddHeader
"Location
",
"http://www.###.com
"
Response.End
end if
2. 进入Z-Blog后台
,打开“
文件管理”界面。
3. 找到并打开网站根目录下的 default.asp 文件。
4. 将以上代码加进 default.asp 在下图中红框所示位置。
5. 最后确定无误点击——提交——保存。
301重定向是在
搜索引擎优化中一个很常用的操作
,可以帮助我们转移域名的权重。但是在做301重定向的时候由于
服务器系统、网站程序语言、域名和链接地址的不同
,使用的方法也不同。这个时候我们就要使用301重定向检测工具
,来检测我们的301重定向是否成功。
HttpWatch检测工具
HttpWatch是强大的网页数据分析工具
,集成在Internet Explorer工具栏。包括网页摘要、coo
kies管理、缓存管理、消息头发送/接受、字符查询、报告输出、POST 数据和目录管理功能。
在IE工具栏中 查看——浏览器栏——httpwatch 打开
,也可以使用快捷键shift
+F2打开。
状态为
:301状态 从demo1.php 成功301跳转到demo9.php
,验证301重定向设置成功。
Chinaz站长工具
chinaz站长工具是业内有名的站长工具。其功能非常丰富
,点击http状态码查询
,输入网址
,可以查询出网站的http状态码
,确保是301而不是302.
网站302重定向使用不当导致被GOOGLE惩罚
Business.com是网上最大的商业搜索引擎和分类目录
,以专业提供商业信息而享负盛名
,包括近19万网页。若以“business”为关键词在Google中进行搜索
,该网站名列第一。不过在2010年9月5日
,Business.com遇到一件蹊跷之事
:它的首页PR由8变成了0
, 而且Google搜索结果中找不到该首页。好在被“蒸发”的只是首页。不过庆幸的是第二天首页又回到了Google的搜索结果中
,但PR仍旧为0。
Business.com的问题出在它的重定向命令上。该网站让business.com跳转到www.business.com
,这种重定向本该是永久性的
,而302则属于临时性重定向
,只有当一个网站或网页在24到48小时之内临时移到其它位置的情况下才能使用该命令。但Business.com却错误地使用了
"HTTP/1.1 302 Object Moved”状态码。
其实网站重定向极为普遍
,譬如不满意原来的域名而申请了一个新域名、买下容易被人错拼的域名、防止客户因为拼错URL而找不到网站、等等。可是
,很多人却会由于使用了错误的重定向状态码而遭“灭站之灾”
,就象Business.com。尽管他们的重定向理由充分合理
,然而若使用不当
,则可能被Google误认为是利用多个域名指向同一网站
,那么你的网站就会被封掉
,罪名是“利用重复的内容来干扰Google搜索结果的网站排名”。Business.com就是最好的前车之鉴。只不过大多数使用错误重定向参数的网站没Business.com这么幸运
,一个小小的重定向就可能使网站前功尽弃
,只能从头来过
:重新申请新域名、重新发布新网站、等等。记住
:Google绝不会同情任何人即使无心犯下的错误。
网站服务器响应网页浏览请求的运作流程
让我们先来了解一下用户/
搜索引擎和网站一开始的交互流程。当用户或搜索引擎向一个网站服务器发出网页浏览请求时
,该服务器将
:
1.通过
域名服务器(DNS)将域名转换为网站的IP地址
,然后返回给客户
;
2.打开一个该IP套接口连接
;
3.记下通过该套接口的一个HTTP数据流
;
4.从WEB服务器接收一个响应请求的HTTP数据流。该数据流包含状态码
,状态码的值由HTTP协议所决定。这里所说的“HTTP数据流”信息也叫“头信息(Header)”。头信息中包括了日期
,
服务器类型
,通常还会有一条“200 OK”信息。如果一切良好
,那么
网络服务器就会将“200 OK”信息以及请求页面发送出去。如果网站在这时候已经建立了重定向
,那么服务器就会在头信息中包含一个“302 Moved Temporarily”或“301 Moved Permanent”之类的响应信息。搜索引擎会根据服务器头信息中的内容作出决定。
1. 若准备将服务器上的文件移到其它地方时
,须就以下信息正确地通知
搜索引擎的爬行程序
:
- 目标地址
:这些文件被移向何方
- 移动属性
:暂时移走还是永久性移走
2. 对拥有多个域名的网站
,专家建议应把那些不想在搜索引擎上推广的域名用301跳转命令来永久性重定向。
对于正确实施301重定向
,有这样几个方法可供大家参考
:
1.在.htaccess文件中增加301重定向指令。
2.适用于使用Unix
网络服务器的用户。通过此指令通知
搜索引擎的spider你的站点文件不在此地址下
,这是较为常用的办法。形如
:Redirect 301 / url。
3.适用于使用Window网络服务器的用户。在
服务器软件的系统管理员配置区完成301重定向。
4.采用“mod_rewrite”技术。
通过该技术进行的改变将在.htaccess文件中体现出来
,形如
:
Options
+FollowSyml
inks
RewriteEngine on
RewriteCond % ^yourdomain.com
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R
=permanent,L]
5.用ASP/PHP实现301重定向
:
代码在上面已经介绍过了。
对于Business.com所遭遇的问题Dan Thies深有体会
,因为他也有过类似的遭遇。他的网站上有一个会员跟踪
脚本
,其中一个会员的站点通过302命令映射到这个跟踪脚本
,而这个跟踪脚本又是通过302映射到他的主页。当在Google中用“keyword research”进行搜索
,他的主页排名在前十位
,然而地址显示的却是那个会员的网址。结果使他哭笑不得
:访问者通过Google搜索结果进入他的网站
,而他却不得不为这些访问量给那个会员支付报酬! 后来他用robots.txt文件禁止Spiders跟踪访问他的会员跟踪脚本才算解决了问题。
对于Business.com
,Dan Thies认为
:“目前Google在302重定向
"的处理上还存在一定的问题
,但并不表示Google不允许302重定向。Business.com并未遭封或遭到惩罚
,它们只是返回了错误的响应。”
如果使用了跟踪URL/
脚本
,又必须让访问者重定向到某一着陆页
,那么一定要在robots.txt文件中禁止Spiders去访问第二个重定向。如果没有对跟踪URL/脚本进行重定向
,而只是把另外一个URL上的内容给复制过来
,那么应在robots.txt文件中禁止Spiders去访问跟踪URL
,以防因内容重复而遭
搜索引擎惩罚。
一个多域名站主的经验之谈
:
“我只有一个网站淘星
,主域名是www.domain.com
,此外还有诸如domain1.com、domain2.com、domain3.com等共计十几个域名。所有这些次级域名都映射到www.domain.com
,而且所有域名对应的是同一个IP地址。由于事实上我只有一个站点
,一个站点又只能对应一个.htaccess文件
,显然不可能直接修改.htaccess文件来实现重定向。我采用了如下步骤
:
A.把domain1.com从domain.com上独立出来
,让它成为服务器上的一个普通独立网站。
B.为domain1.com创建一个.htaccess文本文件
,并在文件中设置重定向代码为
:
Redirect permanent / http://www.domain.com/
再将修改后的.htaccess文件上传给domain1.com所在服务器。
这一步也可以在域名控制面板中完成。
本文地址:http://zleialh.tongchengxian.cn/quote/375.html
通成线 http://zleialh.tongchengxian.cn/ , 查看更多