如何進行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” );
%>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章