以下是代碼片段: HTTP/1.1 301 Moved Permanently Cache-Control: private, max-age=2592000 Content-Length: 235 Content-Type: text/html; charset=UTF-8 Date: Mon, 11 Jan 2010 13:58:44 GMT Expires: Mon, 11 Jan 2010 13:58:44 GMT Location: http://www.google.cn/webhp?source=g_cn Server: gws X-XSS-Protection: 0 |
此狀態(tài)明顯說(shuō)明301永久重定向,但是從定向到哪里呢??看下面有一個(gè)Location: http://www.google.cn/webhp?source=g_cn,Location的意思是位置,一個(gè)3xx的請(qǐng)求必須包含Location字段信息,否則將不知道轉(zhuǎn)向到哪里。
在程序中實(shí)現(xiàn)3xx狀態(tài)
ASP:
在ASP的編程中有一個(gè)方法或者說(shuō)是函數(shù)可以控制狀態(tài)行的字符,并且可以添加Location這樣的字段。
以下是代碼片段: % Response.Status = 301 ‘表示狀態(tài)切換成301 Response.AddHeader “Location”,”http://www.baidu.com/” ‘在頭中添加Location字段,其內(nèi)容是百度的網(wǎng)址。 %> |
以下是代碼片段(精確重定向): % Response.Status = 301 ‘表示狀態(tài)切換成301 Response.AddHeader “Location”,”http://www.baidu.com/”Request.ServerVariables(“HTTP_X_REWRITE_URL”) ‘在頭中添加Location字段,其內(nèi)容是百度的網(wǎng)址。 %> |
這是永久重定向的實(shí)現(xiàn)方法,有人說(shuō)Response.Redirect也可以重定向,但是你最好用HttpWatch看看到底是不是301!
Request.ServerVariables(“HTTP_X_REWRITE_URL”)是ASP中獲得請(qǐng)求路徑的方法。
PHP:和ASP一樣,也是兩步
以下是代碼片段: ?php header(“HTTP/1.1 301 Moved Permanently”); header(“Location: http://www.baidu.com/”); ?> |
以下是代碼片段(精確重定向): ?php header(“HTTP/1.1 301 Moved Permanently”); header(“Location: http://www.baidu.com/”.$_SERVER"REQUEST_URI"]); ?> |
在PHP中header()這個(gè)方法直接可以對(duì)HTTP頭部信息進(jìn)行操作,如果不寫(xiě)“header(“HTTP/1.1 301 Moved Permanently”); ”這個(gè)的話也可以轉(zhuǎn)向,不過(guò)和ASP的Response.Redirect一樣,狀態(tài)不會(huì)是301而是300。
ASP.net:也是兩步
以下是代碼片段: %@ Page Language=”C#” %> % Response.Status = “HTTP/1.1 301 Moved Permanently”; Response.Headers.Add(“Location”, http://www.baidu.com/); %> |
以下是代碼片段(精確重定向): %@ Page Language=”C#” %> % Response.Status = “HTTP/1.1 301 Moved Permanently”; Response.Headers.Add(“Location”, “http://www.baidu.com/”.Request.ServerVariables(“HTTP_X_REWRITE_URL”)); %> |
策略
要實(shí)現(xiàn)重定向,就要保證用戶訪問(wèn)的所有地址都執(zhí)行了上面的代碼,如果有條件可以將所有請(qǐng)求Rewrite到一個(gè)這樣的文件,如果不行,就想辦法都要執(zhí)行這個(gè)代碼,其中有很多辦法,比如dedecms無(wú)論訪問(wèn)什么地址都執(zhí)行了common.inc.php這個(gè)文件,大家就可以上面的代碼放到這個(gè)文件中。
另外同一空間實(shí)現(xiàn)判斷重定向,如果一個(gè)空間綁定了兩個(gè)域名
http://www.111.cn
http://www.111.com
如果用戶訪問(wèn)的是http://www.111.cn/index.asp?page=2這樣的網(wǎng)站重定向到http://www.111.com/index.asp?page=2,在同一空間如何實(shí)現(xiàn),這里是以ASP編程做的例子,如果想判斷是cn的域名就進(jìn)行轉(zhuǎn)向,不是com的域名就不轉(zhuǎn)向可以通過(guò)編程方法實(shí)現(xiàn)判斷
以下是代碼片段(精確重定向): % comDomain = “www.111.com” ‘定義COM域名
If Request.ServerVariables(“SERVER_NAME”) > comDomain Then ‘如果請(qǐng)求的域名不是com的域名 |
補(bǔ)充一下:Apache 服務(wù)器可以直接在 .htaccess 文件中實(shí)現(xiàn) 301 重定向。
標(biāo)簽:文山 臨滄 中衛(wèi) 延邊 山西 荊門(mén) 連云港 大連
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《301永久重定向講解和設(shè)置方法》,本文關(guān)鍵詞 301,永久,重定向,講解,和,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。