301重定向菜鸟教程
公司网站更换了新域名,以前的2个老域名还将继续使用一段时间,问题来了,以前的老域名花了大量的人力和财力去推广,收录和排名都有取得了一定的成绩,换新域名前面的推广成绩难道就白费了吗?如果我们使用301永久重定向能解决这个问题。
赖林林补料了,什么是301重定向?
301重定向,是一种非常重要的“自动转向”技术。网址重定向最为可行的一种办法。当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。
什么情况下使用301重定向?
1:网站更换域名时,通过301永久重定向将旧域名重定向至新域名,挽回流量损失和SEO。
2:当出于需要删除网站中的某些目录时,比如要删除网站下面的一个分类,这时就可以用301永久重定向到网站首页。
3:如果你有多个闲置域名时需要指向同一网站时,通过301永久重定向可以实现。
4:你打算实现网址规范化。
赖林林今天在研究网站域名301重定向,费了很大的劲终于搞明白了。
研究了一个上午才完全搞定在服务器上和虚拟主机上的301重定向的问题
一、windows服务器,iis6.0 301重定向方法
以本站举例,本站域名
www.lailinlin.com,
lailinlin.com,
www.lailinlin.cn,
lailinlin.cn
目标:将所有域名301跳转到lailinlin.com,所有域名的权重将集中在lailinlin.com这个域名上,包括PR,收录等等。
1、在IIS里网站(主站)的所有主机头删除,只留lailinlin.com这一个主机头
2、新建一个网站,暂且命名为lailinlingood,网站目录可以为空,将新建的这个网站的主机头设为
www.lailinlin.com
www.lailinlin.cn
lailinlin.cn这三个。
3、设置lailinlingood的属性,在“重定向到”一栏里面输入“http://shenzhenwo.com$S$Q”,然后在“上面输入的准确URL”和“资源的永久重定向”两个选项前面打钩,最后点应用,就此301重定向全部设置完成。
4、二级域名的设置方法也跟上面步骤一样,如要将www.lailinlin.com/bbs
301转向为bbs.lailinlin.com。也许你会说我直接设置个二级域名就可以了,但是搜索引擎会认为
www.lailinlin.com/bbs/1.htm
和bbs.lailinlin.com/1.htm是两个不同的页面,但事实上这两个页面是一样的,因此会分散这个页面的权重。
---------------------------重定向的参数说明--------------------------
$S-将请求的 URL 的后缀传递给新的 URL。后缀是用重定向的 URL 代替之后,初始 URL 中所保留的部分。如果未设置
EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。
$P-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,不包括问号 (?)。
$Q-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,包括问号 (?)。
$V-传递请求的 URL,不包括服务器名和任何参数。要包含参数,可使用 $P 或 $Q 变量及 $V 变量。如果未设置 EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。
参数还有很多,基本上最常用的就是$S和$Q,任意网址想要实现301的永久重定向只需设置$S和$Q就可以了。
二、虚拟主机的301重定向方法,以PHP为例。
在最先执行的页面上面加入以下代码:
以下代码功能是,将www.lailinlin.com跳转到lailinlin.com
------------------------------------------------------------------
<?php
$the_host = $_SERVER['HTTP_HOST'];//取得进入所输入的域名
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';//判断地址后面
if($the_host == 'www.lailinlin.com')//这是我要更正的域名地址
{
header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location: http://lailinlin.com'.$request_uri); //跳转
}
?>
------------------------------------------------------------------
需要说明的是,这个代码只能实现当前页面的跳转(也就是加了代码的这个页面的跳转),要实现整站的跳转,则需在服务器上设置。
另外在网络上看到很多以下代码的跳转方式:
-------------------------------------------------------
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location:http://lailinlin.com/");
exit();
?>
-------------------------------------------------------
其实这种方式是不对的,没有做头部判断造成死循环。这种方式只适合从A域名跳转到B域名,比如你帮网站换了个新域名。要实现带www和不带www之间的跳转则需用第一段代码。
原创文章请注明转载自赖林林博客,本文地址:http://lailinlin.com/post/221.html