本来小凯seo博客打算把301重定向归档到seo基础知识的栏目下面,对于seo基础优化的内容来和朋友们分享。但是301重定向的定义和作用,很多学习seo的朋友都不不会陌生,只是对301重定向怎么做这个问题还不是很熟悉。因此,小凯打算把301重定向这个seo名称的解释,直接通过怎么实现301重定向的seo技术操作的方式分享给朋友们。
301重定向是一种同一网站网址域名的一种方式,对seo优化是有百利而无一害的。是一种非常重要的基础优化操作细节之一。通常情况下我们会给自己的网站绑定两个域名,一个是带www的域名,比如小凯seo博客的域名:www.xiaokaiseo.com;一个是不带www的域名,比如小凯seo博客的域名:xiaokaiseo.com。301重定向实现的结果就是使得用户在访问不带www域名的时候,网站会自动跳转到带www的域名下面。
301重定向是唯一一个搜索引擎排名算法的集中网站首页权重的方法,比如其他的302暂时重定向以及JS代码调整实现的重定向结果,都会使得所跳转的URL结果出现不规范的问题。用另一种方式解释301重定向的话,就是给自己的网站设置一个主域名,其他所有可以指向网站首页的链接都会通过301重定向的方式直接调整到我们所设置的主域名上面。也只有这种方法才可以作为网站seo优化操作和网站网络营销推广等针对网站的不同推广方式建立不同的域名,不但不会被搜索引擎重复收录网站信息,避免了搜索引擎认为网站seo作弊受到的惩罚。
一般来说,只有网站更换域名的时候、网站修改或是删除网站目录而产生死链接的时候、打算用多个域名指向同一个网站实现多种推广方式的时候、进行seo基础优化操作的时候都是需要进行301重定向操作的。301永久重定向有几种不同的做法,在windows主机上和Unix/Linux主机是不同的,301重定向的具体操作方法如下:
在windows主机上设置的方法,可以在IIS服务器上设置也可以在代码中设置。
1、在IIS服务器上设置301的方法
这种设置方法需要有一个先天条件,那就是你有服务器的管理权,你可以直接操作IIS服务器,并且可以随意开通新的虚拟主机,否则你只能用修改网站代码的方法。
首先开通一个新的虚拟主机,将你需要做301永久重定向的域名正常与该空间绑定,这个绑定的方法你可以咨询服务器托管商。
然后打开“控制面板”→找到“管理工具”→打开“Internet 信息服务”。打开后,可以在管理器左侧树形菜单中找到你的网站,然后右击选择“属性”,打开网站的属性管理面板,并且选择到“主目录”选项卡,选择“重定向到URL”,然后在地址框中输入“主域名”,然后将选项卡中的“资源的永久重定向”选择上,点击确定即可设置完毕。
2、在网站代码中设置301的方法
只需要将以下代码加在网页的开头即可,不过只能用在ASP和PHP文件中,HTML无法通过代码设置301。
ASP代码:
<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently” Response.AddHeader “Location” , ” http://www.###.com”
%>
PHP代码:
<?
Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http://www.###.com” );
?>
注:将我的网址替换成你自己的定向后的目标网址即可,所有的标点必须用英文半角。
3、在博客中设置301的方法
这边以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.最后确定无误点击 提交 保存。
在Unix/Linux主机上设置的方法
可以用.htaccess文件
1. Apache模块 mod_alias的 Redirect 和 RedirectMatch命令
上面提到2个命令使用方法相似。而区别就是后者RedirectMatch基于正则表达式匹配对当前的URL发送一个外部重定向语法为:
Redirect [status] URL-path URL
RedirectMatch [status] regex URL
status参数可以使用以下HTTP状态码:
permanent
返回一个永久性重定向状态码(301),表示此资源的位置变动是永久性的。
temp
返回一个临时性重定向状态码(302),这是默认值。
seeother
返回一个“参见”状态码(303),表示此资源已经被替代。
gone
返回一个“已废弃”状态码(410),表示此资源已经被永久性地删除了。如果指定了这个状态码,则URL参数将被忽略。
举例:
APACHE
Redirect 301 /old/old.htm http://www.###.com/new.htm
Redirect permanent /one http://###.com/two
RedirectMatch 301 (.*).gif$ http://www.###.com/images/$1.jpg
2.使用mod_rewrite重写URL方式
APACHE
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^####.comRewriteRule ^(.*)$ http://www.###.com/$1 [R=permanent,L]
在这里判断当前服务器变量HTTP_HOST是否等于###.com,为真就进行重写,按照R=permanent进行永久重定向,L表示并立即停止重写操作,并不再应用其他重写规则
下面是最终实现的.htaccess文件,同时也并入wordpress重写规则。
APACHE
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
#Redirect
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^###.com$
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://www.###.com/$1 [R=301,L]
#Rewrite(blog)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/.* /blog/index.php [L]
RewriteRule . –
</IfModule>
# END WordPress