首页 > php代码 > 301重定向代码与方法

301重定向代码与方法

301重定向代码与方法

PHP下的301重定向

<?php
  Header( "HTTP/1.1 301 Moved Permanently" ) ;
  Header( "Location: http://www.phprm.com" );
?>

ASP下的301重定向

<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.phprm.com"
%>

ASP .NET下的301重定向


ColdFusion下的301重定向

<.cfheader statuscode="301" statustext="Moved permanently">

<.cfheader name="Location" value="http://www.phprm.com">

旧域名重定向到新域名

创建一个.htaccess文件,并将下面提供的代码写入文件内,它可以确保旧域名所有的目录或者网页正确的跳转到新域名内。

记住.htaccess文件一定要放在旧网站的根目录下,并且新网站要和旧网站保持相同的目录结构及网页文件

Options +FollowSymLinks

RewriteEngine on

RewriteRule (.*) http://www.phprm.com/ [R=301,L]

请将上面的www.phprm.com修改成你想要跳转到的域名。

此外,我建议大家归总旧网站的外部链接,并联系相应的站点修改导入链链的URL,以指向新站点。


4.采用&ldquo;mod_rewrite&rdquo;技术

通过该技术进行的改变将在.htaccess文件中体现出来,形如:

Options +FollowSymLinks

RewriteEngine on

RewriteCond % ^cfan365.cn

RewriteRule ^(.*)$ http://www.phprm.com/ [R=permanent,L]

5.绑定/本地DNS(域名别名跳转)

如果具有对本地DNS记录进行编辑修改的权限,则只要添加一个记录就可以解决此问题。

若无此权限,则可要求网站托管服务商对DNS服务器进行相应设置。

DNS服务器的设置

若要将aaa.cfan365.cn指向www.phprm.com,则只需在DNS服务中应增加一个别名记录,可写成:aaa IN CNAME www.phprm.com。

如需配置大量的虚拟域名,则可写成:* IN CNAME www.phprm.com.

这样就可将所有未设置的以cfan365.cn结尾的记录全部重定向到www.phprm.com上。

6.用ASP/PHP实现301重定向:

代码在上面已经介绍过了

资深SEO专家Dan Thies的看法和建议

对于Business.com所遭遇的问题Dan Thies深有体会,因为他也有过类似的遭遇。他的网站上有一个会员跟踪脚本,其中一个会员的站点通过302命令映射到这个跟踪脚本,而这个跟踪脚本又是通过302映射到他的主页。当在Google中用&ldquo;keyword research&rdquo;进行搜索,他的主页排名在前十位,然而地址显示的却是那个会员的网址。结果使他哭笑不得:访问者通过Google搜索结果进入他的网站,而他却不得不为这些访问量给那个会员支付报酬! 后来他用robots.txt文件禁止Spiders跟踪访问他的会员跟踪脚本才算解决了问题。

对于Business.com,Dan Thies认为:&ldquo;目前Google在302重定向"的处理上还存在一定的问题,但并不表示Google不允许302重定向。Business.com并未遭封或遭到惩罚,它们只是返回了错误的响应。&rdquo;

Dan Thies建议:如果使用了跟踪URL/脚本,又必须让访问者重定向到某一着陆页,那么一定要在robots.txt文件中禁止Spiders去访问第二个重定向。如果没有对跟踪URL/脚本进行重定向,而只是把另外一个URL上的内容给复制过来,那么应在robots.txt文件中禁止Spiders去访问跟踪URL,以防因内容重复而遭搜索引擎惩罚。

301重定向经验谈

一个多域名站主的经验之谈:

&ldquo;我只有一个网站,主域名是www.phprm.com,此外还有诸如domain1.com、domain2.com、domain3.com等共计十几个域名。所有这些次级域名都映射到www.phprm.com,而且所有域名对应的是同一个IP地址。由于事实上我只有一个站点,一个站点又只能对应一个.htaccess文件,显然不可能直接修改.htaccess文件来实现重定向。我采用了如下步骤:

A.把domain1.com从cfan365.cn上独立出来,让它成为服务器上的一个普通独立网站。

B.为domain1.com创建一个.htaccess文本文件,并在文件中设置重定向代码为:

Redirect permanent / http://www.phprm.com/

再将修改后的.htaccess文件上传给domain1.com所在服务器。

这一步也可以在域名控制面板中完成。

一级域名www.phprm.com下的目录abc 

原访问地址为:www.phprm.com/abc 

现在想为目录abc添加二级域名abc.phprm.com 

怎么才能将www.phprm.com/abc永久重定向abc.phprm.com 

服务器环境:win2003+IIS6+php

www.xxx.net/abc已不再是一个域名了,浏览器访问至始至终都是对一个页面的请求,重定向只能由www.xxx.net上面abc文件来决定的。

还有个问题,就是301永久定向后, 

动态页的GET参数怎么传呀 

将abc/index.php 永久定向到abc.xxx.com/index.php 

如果在地址栏中输入 

abc/index.php?xxx=123 

页面会直接转到 

abc.xxx.com/index.php 

但是GET参数 xxx=123 没有了。 

是不是,需要在动态文件中头部加代码: 

首先判断客户端的URL,如果不是abc.xxx.com/index.php 

就输出 

Header("HTTP/1.1 301 Moved Permanently"); 

Header("Location: abc.xxx.com/index.php?GET参数及值");


PHP下的实现方式(参考):

.htaccess文件代码如下(bloghuman.com的.htaccess如此设置):

Options +FollowSymlinks

RewriteEngine on

rewritecond %{http_host} ^bloghuman.com [nc]

rewriterule ^(.*)$ http://www.bloghuman.com/$1[r=301,nc]

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

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

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

我的.htaccess配置实现了由主域名(bloghuman.com)301跳转至二级域名(www.bloghuman.com);

结论:

Options +FollowSymlinks

RewriteEngine on

rewritecond %{http_host} ^phprm.com [nc]

rewriterule ^(.*)$ http://www.phprm.com/$1[r=301,nc]

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

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


永久地址:http://www.phprm.com/code/5b3fd8fa8e56cbbb3be04b45b4c2b286.html

转载随意~请带上教程地址吧^^

标签:none

发表留言