codetc - 网站开发技术 首页 后端 PHP 查看内容

301跳转与URL转发

2015-4-7 18:18| 发布者: CODETC| 查看: 3903| 评论: 2

我们都知道本身是不带有www的,但由于很多人都习惯使用“www.++.com”的形式来访问站点,如果此时你的域名没有做www的解析,那么“www.++.com”将无法访问到你的站点。而当我们做好解析,让站点既能通过“++.com”访问也能通过“www.++.com”访问时就会产生另一个问题,就是会分散域名的流量与PR值,最好是将所有访问定向到某个域名下。


我们可以通过使用服务器技术实现的url转发功能(url-forwarding 或 url redirect),转发到带www的域名来访问。但是我们说到用这种url转发方式是对seo不利的,对搜索引擎最友好的跳转方式是使用301转向(也叫301跳转,301重定向)。


所以这里就有一些疑问了,为什么godaddy等域名注册商提供的url转发功能是不利于seo的?url转发的原理是什么?如果要用301转向,那么Linux apache, Windows IIS, php 又该如何设置来实现301重定向?


301重定向的作用

为什么要使用301转向?首先第一条就是刚才我们提到的为了seo优化,设置301转向后,原来的页面将返回301 HTTP 状态码给浏览器或者搜索引擎,告知搜索引擎次页面已经永久重定向到了新的网页上,spider就不会索引原网页,同时也会将原网页的PR权重传递给跳转到的新网页。如果返回的是302状态码,则告诉spider页面跳转只是临时的,spider仍然会索引原网页,这就造成了重复页面问题。如www.codetc.com 302 跳转到 codetc.com,它们就会被当做两个重复页面。


其次,由于各种原因要更换域名时,可以使用301重定向将老域名301转向到新的域名,这样老域名的流量不会流失,PR权重也会转移。另外当有注册了多个不同域名,指向到同一网站时,也可以只设置一个主域名,将其他域名设置301转向到主域名,这样各个域名就不会分散权重。因此使用301转向很有必要。


URL转发的原理

url转发有两种方式,隐藏转发和(url转发后浏览器地址栏输入的网址不变)不隐藏转发(也叫显性转发:url转发后地址栏显示的地址为转发后的网址)。有人测试过,不管是隐藏转发还是不隐藏转发,根据不同的域名注册服务商,可能会返回不同的http header。有的域名服务商管理后台设置的url转发功能(URL Forwarding)会使服务器返回302状态码给搜索引擎,而不是301 http 状态码。


据说这类url转发有的是通过给浏览器窗口套用一个框架iframe的方式来实现隐藏转发,有的则是使用Javascript或Meta Refresh来实现不隐藏方式的url转发,很少是真正用了301 重定向方法的。所以大家还是尽量少用域名注册服务商提供的url转发功能,而是自己去手工设置实现301转向。


如何实现301重定向

设置301重定向(301转向,跳转)的实现方法也有很多,下面根据不同的空间服务器类型和程序语言列出各种301重定向实现代码,要参考的童靴请对号入座:


Linux 主机 Apache服务器 Mod-Rewrite 模式:通过.htaccess文件

当浏览器或搜索引擎spider发送一个页面请求时,Web服务器就会检查一个名为'.htaccess'的文件,这个文件指明了如何处理页面请求,通过修改设置'.htaccess'文件就可以告知搜索引擎某个页面是302转向(临时跳转)还是301重定向(永久性跳转)。有的Linux主机服务器还支持你在管理后台直接设置301转向。如果不能在后台设置,实现301重定向步骤也很简单:新建一个文件名为.htaccess的文档(注意前面的点号不能遗漏),在文档中写入以下301转向代码:

Options +FollowSymLinks
RewriteEngine on
rewritecond %{HTTP_HOST} ^codetc.com [NC]
rewriterule ^(.*)$ http://www.codetc.com/$1 [R=301,L]

保存文件,上传到网站根目录即可。上面的代码表示整站所有以不带www的域名codetc.com为地址的网页都会301转向到带www的域名www.codetc.com(不仅是首页,子目录/网页也可以)。如果是其他域名要重定向到 www.codetc.com 这个新域名,则在.htaccess文件中加入如下重定向代码:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://www.codetc.com/$1 [L,R=301]

Windows主机IIS下的301转向设置

在IIS 管理后台 -> 选择你要重定向的文件或文件夹 -> 右键"重定向到URL" -> 输入需要转向的目标URL ->选择"资源的永久重定向"。 另外,如果你的Windows虚拟主机空间支持ISAPI_Rewrite,那么在IIS下利用ISAPI_Rewrite不仅可以实现url 重写,还可以用来设置301转向,下面分别是三个版本的ISAPI_Rewrite对应的带www的域名301转向到不带www域名的代码:

# ISAPI_Rewrite 1.3 版本 域名的301重定向
RewriteCond Host: ^codetc\.com$
RewriteRule (.*) http\://www.codetc\.com$1 [I,R]

# ISAPI_Rewrite 2.x 版本
RewriteCond Host: ^codetc\.com$
RewriteRule (.*) http\://www.codetc\.com$1 [I,RP]

# ISAPI_Rewrite 3.x 版本
RewriteCond %{HTTP:Host} ^codetc\.com$
RewriteRule (.*) http\://www.codetc\.com$1 [NC,R=301]

PHP 301 重定向代码

301重定向也可以在php文件中通过加入php header来实现,代码如下:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.codetc.com/newpage.html");
exit();
?>
文章来源 CODETC,欢迎分享,转载请注明地址: http://www.codetc.com/article-170-1.html
发表评论

最新评论

引用 301tz  2022-1-25 16:39
国内免备案服务器 不限制内容 域名被墙 网站被墙 301跳转都可以解决QQ: 851617266 网站是 zfcdn.xyz
引用 301跳转  2020-11-28 11:11
国内免备案服务器 不限制内容 域名被墙 网站被墙 301跳转都可以解决QQ: 851617266 网站是 zfcdn.xyz

查看全部评论(2)

 作为游客发表评论,请输入您的昵称

返回顶部