301重定向代码及使用

添加评论 2010年1月24日

关于301重定向的好处,和一般301重定向的方法,网上有很多,笔者就不重复了,今天要说的,是网站通过修改网页的形式做好301重定向。

下面以php代码为示例:

一般网上能找到的301重定向代码都是:

PHP代码
<? Header( ”HTTP/1.1 301 Moved Permanently” );
Header( ”Location: http://www.abc.com” );?>

这个301重定向代码只适应于网站迁移的情况,即旧站和新站域名不同、根目录也不相同的情况。如果网站属于一个网站绑定2个域名,2个域名的根目录为同一个,那么,就会行成死循环。

下面这个301重定向代码只适应于网站首页的301重定向,如果网站已经被收录,或存在大量的非首页外链,要全部301重定向过来,那就无能为力了。更合适的方法是使 用.htaccess来定向,简单快捷,不过笔者不懂这个,在此,笔者将PHP网站301重定向方法完全放出,希望能帮到新人,如果有不足之处,也请高手 指出,不胜感激。

一、建立一个301.inc.php(文件名自取)
<?php
$the_host = $_SERVER[’HTTP_HOST’];//取得进入所输入的域名
$request_uri = isset($_SERVER[’REQUEST_URI’]) ? $_SERVER[’REQUEST_URI’] : ’’;//判断地址后面部分
if($the_host !== ’www.xunihost.com’)//这是我要以前的域名地址
{
header(’HTTP/1.1 301 Moved Permanently’);//发出301头部
header(’Location: http://www.xxx.net’.$request_uri);//跳转到我的新域名地址
}
?>

其 中if($the_host !== ’www.xunihost.com’)中的“!==”是不完全等于的意思,也可以用“!=”不等于,这样,就可以将以前 的域名,包括jinjie168.com、www.xxx.com以及新域名中我xunihost.com全部重定向到www.xxx.net。

二、在网页文件中调用301.inc.php
<?php include(“301.inc.php”); //301重定向 ?>
将这个301重定向调用代码放到你所有网页的最前面。

好了,301重定向就做好了,将301文件上传到网站目录,就可以去看看你的成果了。

通过上面的例子相信大家可以在各种代码下操作了,下面就来看看各种情况下的301重定向代码:

1、IIS下301重定向设置

Internet信息服务管理器 -> 虚拟目录 -> 重定向到URL,输入需要转向的目标URL,并选择“资源的永久重定向”。

2、ASP下的301重定向代码

<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “http://www.jinjie168.com/articles/301/”
%>

3、ASP.Net下的301重定向代码

<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(”Location”,”http://www.jinjie168.com/articles/301/“);
}
</script>

4、PHP下的301重定向代码

header(”HTTP/1.1 301 Moved Permanently”);
header(”Location: http://www.jinjie168.com/articles/301/”);
exit();

5、CGI Perl下的301重定向代码

$q = new CGI;
print $q->redirect(”http://www.xunihost.com/”);

6、JSP下的301重定向代码

<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.xunihost.com/” );
response.setHeader( “Connection”, “close” );
%>

7、Apache下301重定向代码

新建.htaccess文件,输入下列内容(需要开启mod_rewrite):

1)将不带WWW的域名转向到带WWW的域名下

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^lesishu.cn [NC]
RewriteRule ^(.*)$ http://www.xunihost.com/$1 [L,R=301]

2)重定向到新域名

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

3)使用正则进行301重定向,实现伪静态

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+)\.html$ news.php?id=$1

将news.php?id=123这样的地址转向到news-123.html

8、Apache下vhosts.conf中配置301重定向

为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配置为:

<VirtualHost *:80>
ServerName www.xunihost.com
DocumentRoot /home/lesishu
</VirtualHost>

<VirtualHost *:80>
ServerName lesishu.cn
RedirectMatch permanent ^/(.*) http://www.xunihost.com/$1
</VirtualHost>

Apache下除了以上2种方法,还有其他配置方法和可选参数,建议阅读Apache文档。

301重定向情况检测

  1. http://www.seoconsultants.com/tools/headers.asp
  2. http://www.internetofficer.com/seo-tool/redirect-check/
  1. 2010年1月24日 at 10:56 | #1
    小王

    很好,很全面。介绍也比较详细

  2. 2010年3月2日 at 14:05 | #2

    提供的这两个检测工具挺实用的

  3. 2010年3月4日 at 13:51 | #3

    谢谢,学习了

  4. 2010年3月6日 at 12:33 | #4
    倩舞飞杨

    怎么只有PHP的使用方法,有没有其它的代码使用方法

  5. 2010年3月15日 at 07:21 | #5
    admin

    这是个例子,你可以根据它自己写出其他代码的使用方法

  6. 2010年5月5日 at 18:48 | #6

    学习了,可是买的国外空间可以这样设置301吗?

  7. 2010年5月5日 at 21:10 | #7
    admin

    也可以的,国外空间内大部分都有.htaccess文件,通过它设置更简单一些。第7条就是它的设置方法

  8. 2010年6月14日 at 15:05 | #8

    很不错 我的是asp 好像不怎么详细

  9. 2010年8月5日 at 01:01 | #9

    I want to post quick hello and want to say appriciate for this good article.

  10. 2010年8月5日 at 11:22 | #10

    Some specialists say that loans help people to live the way they want, just because they can feel free to buy necessary goods. Furthermore, banks offer bank loan for different classes of people.

  11. 2010年10月31日 at 18:05 | #11

    从定向代码应该放在哪?

  12. 2010年11月2日 at 08:40 | #12
    admin

    网站页面的最顶端。标签的上面

  13. 2011年1月4日 at 09:37 | #13

    我现在是用的自己的独立服务器,我用asp.net做了几个网站,都发布上去,可是带端口号的怎么绑定到域名上呢?url转发域名服务商业停止了。实在是没办法了。还请你指点一下。我的QQ号是:331512835

  14. 2011年1月4日 at 21:52 | #14
    admin

    你可以通过设置主机头名实现,不一定非要通过分配不同端口号实现。
    通过设置主机头名实现的方法:
      比如你本机只有一个IP地址为192.168.0.1,你已经建立(或设置)好了两个Web站点,一个是”默认Web站点”,一个是”我的第二个Web站点”,现在你想输入” http://www.xxx.cn/“可直接访问前者,输入” http://www.xxx.com/“可直接访问后者。其操作步骤如下:
      —> 请确保已先在DNS服务器中将你这两个域名都已映射到了那个IP地址上;并确保所有的Web站点的端口号均保持为80这个默认值。
      —>再依次选”默认Web站点→右键→属性→Web站点”,单击”IP地址”右侧的”高级”按钮,在”此站点有多个标识下”双击已有的那个IP地址(或单击选中它后再按”编辑”按钮),然后在”主机头名”下输入” http://www.xxx.cn/“再按”确定”按钮保存退出。
      —>接着按上步同样的方法为”我的第二个Web站点”设好新的主机头名为” http://www.xxx.com/“即可。
      —>最后,打开你的IE浏览器,在地址栏输入不同的网址,就可以调出不同Web站点的内容了。
      建立新的网站就可以了,只是在此网站的主机头选项里输入不同的域名就行了
      如何访问的是计算机自动来完成的,不需要人工干预.

  15. 2011年10月15日 at 14:20 | #15

    学习重定向

  16. 2011年11月16日 at 19:28 | #16

    测试以上301代码成功

  17. 2012年3月20日 at 16:07 | #17

    301重定向代码及使用 I was recommended this blog by my cousin. I’m not sure whether this post is written by him as no one else know such detailed about my trouble. You are incredible! Thanks! your article about 301重定向代码及使用 Best Regards Lawrence Agata

  1. 还没有 trackbacks
订阅评论