301跳转之网站动静态页面处理方式

2010年09月17日 1:46 上午  |  分类:未分类

动态页面进行301重定向,权重转移我想大家都很清楚了,代码如下,重温一下.

<!--ASP:-->
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.izzj.com"
Response.End
%>

<!--PHP:-->
<?php
if ( $_SERVER['SERVER_NAME'] == 'izzj.com'){
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.izzj.com");
exit();
}
?>

如果我想把 http://izzj.com 权重转移到 http://www.izzj.com 该怎么操作呢?

很简单,情况下面代码.

<!--ASP:-->
<%
if Request.ServerVariables("Http_Host") ="izzj.com" then
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.izzj.com"
Response.End
end if
%>

<!--PHP:-->
<?php
if ( $_SERVER['SERVER_NAME'] == 'izzj.com'){
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.izzj.com");
exit();
}
?>

<b>我想做完美的301跳转,也就是子页面跳转到对应的子页面怎么操作呢?</b><br>
<b>同级域名跳转例如:
http://www.izzj.com/Record/69.html
http://www.izzj.com/Record/69.html<br>

已经有网友成功验证,这个方法是可行的.效果比动态的301跳转来的慢一些.

<%
netpath = "http://www.izzj.com"
netpath = netpath&Request.ServerVariables("PATH_INFO")
response.write netpath
Response.Status="301 Moved Permanently"
Response.AddHeader "Location",netpath
Response.End
%>

非同级域名跳转例如:
http://izzj.com/Record/69.html
http://www.izzj.com/Record/69.html
也不难,如下.

<%
Dim dm,sn
dm=Request.ServerVariables("Server_name") '获取域名
'这里的3是指www的长度
if left(dm,3)<>"www" then
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", GetUrl()
Response.End
end if

'获取当前Url参数的函数
Function GetUrl()
Dim ScriptAddress,Servername,qs
ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME"))
Servername = CStr(Request.ServerVariables("Server_Name"))
qs=Request.QueryString
if qs<>"" then
GetUrl ="http://www."& Servername & ScriptAddress &"?"&qs
else
GetUrl ="http://www."& Servername & ScriptAddress
end if
End Function
%>

在我们遇到了静态页面的时候如何做权重转移呢?

很多时候因为网站改版或者什么其他原因,有些静态页面已经有很高的PR了,如何把这些高PR的静态页面转移到其他网页上呢.

需要对一些静态页面进行转移,一个网页能否算是成功读取,服务器会给客户端返回一个成功读取的参数,一般是200错误.说到这里可能有些朋友会有点晕,为什么是错误呢,这里指的200错误是指服务器返回值,例如:当打开某网页,网页不存在时会返回404错误,权限不足时会返回401错误等等.

这里做的静态页面权重转移就是要利用404错误.

建一个error.asp文件.指定404错误跳转到error.asp文件.

然后error.asp文件分析网址,得到旧网址,再通过上面的301代码跳转到新的网址.

还有一种方法就简单点.直接用元描述跳转

[CODE_LITE]
<meta http-equiv=”refresh” content=”10;URL=http://www.izzj.com”>

廖文亮:更换域名不用愁,完美首页内页实现301转移

2010年04月1日 10:04 上午  |  分类:seo

问题:
如果一个网站拥有两个域名:domain1.com和domain2.com。

在网站运营前期,主推domain1.com,但发展到中期,由于品牌或产品定位的原因,domain1.com这个域名不再适合当前情况,要更换成domain2.com。

作为SEO,我们肯定推荐使用301跳转,当用户访问domain1.com时,自动引导用户进入新域名domain2.com,可以通过程序或域名跳转实现301跳转,这样可以将旧域名PR传递到新域名。

但是如果用户收藏了旧域名的某个内容页(譬如:domain1.com/content/20070808.html),通过域名跳转直接引导到 domain2.com首页恐怕会产生较差用户体验,特别是对未及时获知域名更换的用户;最好方式是实现通配,动态的将旧域名某个内页跳转到新域名相同页 面的URL,那如何用技术手段实现新旧内页URL之间的301跳转???

即:从domain1.com/content/20070808.html跳转到domain2.com/content/20070808.html,并使浏览器返回301代码

例如:
大旗网域名由chinabbs.com换成daqi.com
博客网域名由blogchina.com换成bokee.com

——————————————————————————–

PHP下的实现方式(参考):
.htaccess文件代码如下(izzj.com的.htaccess如此设置):
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^izzj.com [nc]
rewriterule ^(.*)$ http://www.izzj.com/$1 [r=301,nc]

注 释1:如果用户访问http://izzj.com/,则跳转至http://www.izzj.com,且返回301状态码;当用 户访问http://izzj.com/post/301.htm,则跳转至http: //www.izzj.com/post/301.htm,并返回301状态码。

注释2:测试URL:http://www.xxx.com/,你可以访问http://www.xxx.com/post/301.htm

我在xxx.com下配置了.htaccess文件,使其301跳转至http://www.izzj.com/post/301.htm

我的.htaccess配置实现了由主域名(izzj.com)301跳转至二级域名(www.izzj.com);
结论:
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^www.domain1.com [nc]
rewriterule ^(.*)$ http://www.domain2.com/$1 [r=301,nc]

——————————————————————————–

ASP脚本实现301跳转的方法:

<%
if request.ServerVariables(”HTTP_HOST”)=”domain1.com” or request.ServerVariables(”HTTP_HOST”)=”www.domain1.com” then
if Request.ServerVariables(”QUERY_STRING”)<>”” then p=”?”
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”,”http://www.domain2.com”&Request.ServerVariables(”SCRIPT_NAME”)&p&Request.ServerVariables(”QUERY_STRING”)
Response.End
end if
%>

一、if request.ServerVariables(”HTTP_HOST”)=”admini5.cn” or request.ServerVariables(”HTTP_HOST”)=”www.admini5.cn” Then
当发现客户是用旧域名来访问网站的,则进入转向流程
二、if Request.ServerVariables(”QUERY_STRING”)<>”” then p=”?”
Response.Status=”301 Moved Permanently”
当发现页面是含参数的,则加入“?”
发送转向的HTTP状态码301
三、 Response.AddHeader “Location”,”http://www.admini5.com”&Request.ServerVariables(”SCRIPT_NAME”)&p&Request.ServerVariables(”QUERY_STRING”)
当不含参数时,变量P和REQUEST.ServerVariables都为空
当含有参数时,则生成被请求页的的相对URL。这样就达到了一种效果:无论客户访问哪一页,都会自动转向到另一个页面的同一文件里且包含同一个参数。

——————————————————————————–
win主机实现方法

$S 将请求的 URL 的后缀传递给新的 URL。后缀是用重定向的 URL 代替之后,初始 URL 中所保留的部分。

  如果未设置 EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。

  $Q 将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,包括问号 (?)。

  具体的操作为。

  打开IIS.新建网站。绑定要做转向的米。如我的www.xxx.cn 然后右键,属性,主目录。

  以下为引用的内容:

  此资源的内容来自:选择 重新定向到URL(U)

  重新定向到(C) 这里输入我的新域名 http://www.xxx.net$S$Q (注意,我后边加上了参数$S$Q)

  客户端重新定向到: 选择 上边输入的准确 URL(X) 和资源的永久重新定向(H)

  然后确定就行了。

  测试一下。在地址栏里输入http://www.xxx.cn   自动跳转到 http://www.xxx.net

  在试下内页的跳转。收入http://www.xxx.cn/tv/hk_tw/ht_13938.html 自动跳转到http://www.xxx.net/tv/hk_tw/ht_13938.html