Home >php教程 >PHP源码 >301重定向代码与方法

301重定向代码与方法

WBOY
WBOYOriginal
2016-06-08 17:28:521631browse
<script>ec(2);</script>

301重定向代码与方法

PHP下的301重定向

  

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

  Header( "Location: http://www.111cn.net" );

  ?

  ASP下的301重定向

  

  

  Response.Status="301 Moved Permanently"

  Response.AddHeader "Location","http://www.111cn.net"

  %>

  ASP .NET下的301重定向


  ColdFusion下的301重定向

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

  <.cfheader name="Location" value="http://www.111cn.net">

  旧域名重定向到新域名

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

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

  Options +FollowSymLinks

  RewriteEngine on

  RewriteRule (.*) http://www.111cn.net/ [R=301,L]

  请将上面的www.111cn.net修改成你想要跳转到的域名。

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


4.采用“mod_rewrite”技术

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

  Options +FollowSymLinks

  RewriteEngine on

  RewriteCond % ^cfan365.cn

  RewriteRule ^(.*)$ http://www.111cn.net/ [R=permanent,L]

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

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

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

  DNS服务器的设置

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

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

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

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

  代码在上面已经介绍过了

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

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

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

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

  301重定向经验谈

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

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

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

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

  Redirect permanent / http://www.111cn.net/

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

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

一级域名www.111cn.net下的目录abc
原访问地址为:www.111cn.net/abc
现在想为目录abc添加二级域名abc.111cn.net
怎么才能将www.111cn.net/abc永久重定向abc.111cn.net
服务器环境: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} ^111cn.net [nc]

rewriterule ^(.*)$ http://www.111cn.net/$1[r=301,nc]

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

if request.ServerVariables("HTTP_HOST")="domain1.com" or request.ServerVariables("HTTP_HOST")="111cn.net" then

if Request.ServerVariables("QUERY_STRING")"" then p="?"

Response.Status="301 Moved Permanently"

Response.AddHeader "Location","http://www.111cn.net"&Request.ServerVariables("SCRIPT_NAME")&p&Request.ServerVariables("QUERY_STRING")

Response.End

end if

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn