天天看點

如何進行301重定向

總結下301跳轉的方法

什麼是301轉向?

301轉向(或叫301重定向,301跳轉)是當使用者或搜尋引擎向網站伺服器發出浏覽請求時,伺服器傳回的HTTP資料流中頭資訊(header)中的狀态碼的一種,表示本網頁永久性轉移到另一個位址。

其它常見的狀态碼還包括,200表示一切正常,404網頁找不到,302暫時轉向,等等。IIS日志代碼請參考:[網站IIS日志爬行狀态碼]

為什麼要做網址轉向?

除了前面介紹過的網址規範化問題外,還有很多需要做網址轉向的情形。比如,為保護版權,你擁有不同的多個域名:

www.seocmd.com

seocmd.net

seocmd.org

seocmd.com.cn

seocmd.cn

很自然這些域名全部指向一個網站。如seocmd.com為主域名,其它域名就可以轉向到www.seocmd.com。

或者你注冊了公司全稱域名seocmdxuexiwang.com,但太長 ,你也注冊了縮寫域名友善使用者記住seocmd.com,其中一個做主域名,另一個就可以轉向到主域名。

為什麼要用301轉向?

       網址轉向方法主要包括:301轉向,302轉向,JavaScript轉向,PHP/ASP/CGI轉向,META REFRESH網頁META重新整理,等。302轉向可能會有URL規範化問題。其它方法都是常用的作弊手法,當然不是說不可以正當地用,方法本身沒有錯,但被作弊者用多了,搜尋引擎對這些可疑的轉向都很敏感。何必冒險呢。

當網頁A用301重定向轉到網頁B時,搜尋引擎可以肯定網頁A永久的改變位置,或者說實際上不存在了,搜尋引擎就會把網頁B當作唯一有效目标。好處是,第一,沒有網址規範化問題,第二,也很重要的,網頁A的整個權重值會轉移到網頁B(目前百度及谷歌已聲明:轉移全部權重)。

Apache下301轉向代碼:

修改.htaccess檔案,輸入下列内容(需要開啟mod_rewrite):

1)将不帶WWW的域名轉向到帶WWW的域名下:

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} ^xunleipu.com [NC]

RewriteRule ^(.*)$ http://www.xxxx.com/$1 [L,R=301]

2)重定向到新域名:Options +FollowSymLinks

RewriteEngine on

RewriteRule ^(.*)$ http://www.xxxx.com/$1 [L,R=301]

Apache下vhosts.conf中配置301跳轉:

Apache下vhosts.conf中配置301轉向:<VirtualHost *:80>

ServerName www.xxx.com

DocumentRoot /home/

</VirtualHost><VirtualHost *:80>

ServerName xunleipu.com

RedirectMatch permanent ^/(.*) http://www.xxxx.com/$1

</VirtualHost>

Ruby容器中實作301跳轉:

Ruby中實作301轉向:def old_action

headers["Status"] = “301 Moved Permanently”

redirect_to “http://www.xunleipu.com”

end

Coldfusion容器中實作301跳轉:

Coldfusion中實作301轉向:<.cfheader statuscode=”301″ statustext=”Moved permanently”>

<.cfheader name=”Location” value=”http://www.xunleipu.com”>

  如果你用的是 Windows主機,應該在控制台做301轉向設定。

據我所知,HTML無法做301轉向。在HTML裡隻能做JS或META REFRESH,但不是301轉向。而如果用JS跳轉就屬于302了,而不是正常傳回碼為:301

    ASP的301跳轉代碼:

<%Response.Status="301 Moved Permanently"

Response.AddHeader "Location"," http://www.xx.com"

Response.End

%>

  PHP的301跳轉代碼:

<?php

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

Header("Location: http://www.xx.com");

?> 

   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.xunleipu.com”);

}

</script>

  CGI Perl的301跳轉代碼:

$q = new CGI;

print $q->redirect(”http://www.xunleipu.com”);

  JSP的301跳轉代碼:

<%

response.setStatus(301);

response.setHeader( “Location”, “http://www.xunleipu.com” );

response.setHeader( “Connection”, “close” );

%>