在php中,302不是錯(cuò)誤,而是HTTP響應(yīng)狀態(tài)碼,意思為“臨時(shí)重定向”,表示被訪問(wèn)頁(yè)面因?yàn)楦鞣N需要被臨時(shí)跳轉(zhuǎn)到其他頁(yè)面;可利用header()來(lái)實(shí)現(xiàn)302跳轉(zhuǎn),語(yǔ)法“header('Location: 跳轉(zhuǎn)url',true,302)”。
本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版、DELL G3電腦
302 代表暫時(shí)性轉(zhuǎn)移(Temporarily Moved ),是HTTP響應(yīng)狀態(tài)碼并不是錯(cuò)誤。
302是臨時(shí)重定向的意思,表示被訪問(wèn)頁(yè)面因?yàn)楦鞣N需要被臨時(shí)跳轉(zhuǎn)到其他頁(yè)面。
在php中,可以利用header()來(lái)實(shí)現(xiàn)302跳轉(zhuǎn)。
有兩種語(yǔ)法格式:
-
語(yǔ)法格式1:
header('HTTP/1.1 302 Moved Permanently'); header('Location: https://www.php.cn');
-
語(yǔ)法格式2:
header('Location: https://www.php.cn', true, 302);
額外再提一句,如果要自適應(yīng)HTTPS/HTTP的話,這樣就可以了:
header('Location: //www.php.cn', true, 302);
擴(kuò)展知識(shí):
HTTP–3xx(重定向)響應(yīng)狀態(tài)碼
要完成請(qǐng)求,需要進(jìn)一步操作。通常,這些狀態(tài)碼用來(lái)重定向。Google 建議您在每次請(qǐng)求中使用重定向不要超過(guò) 5 次。您可以使用網(wǎng)站管理員工具查看一下 Googlebot 在抓取重定向網(wǎng)頁(yè)時(shí)是否遇到問(wèn)題。診斷下的網(wǎng)絡(luò)抓取頁(yè)列出了由于重定向錯(cuò)誤導(dǎo)致 Googlebot 無(wú)法抓取的網(wǎng)址。
-
300(多種選擇): 針對(duì)請(qǐng)求,服務(wù)器可執(zhí)行多種操作。服務(wù)器可根據(jù)請(qǐng)求者 (user agent) 選擇一項(xiàng)操作,或提供操作列表供請(qǐng)求者選擇。
-
301(永久移動(dòng)): 請(qǐng)求的網(wǎng)頁(yè)已永久移動(dòng)到新位置。服務(wù)器返回此響應(yīng)(對(duì) GET 或 HEAD 請(qǐng)求的響應(yīng))時(shí),會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到新位置。您應(yīng)使用此代碼告訴 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已永久移動(dòng)到新位置。
-
302(臨時(shí)移動(dòng)): 服務(wù)器目前從不同位置的網(wǎng)頁(yè)響應(yīng)請(qǐng)求,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來(lái)響應(yīng)以后的請(qǐng)求。此代碼與響應(yīng) get 和 head 請(qǐng)求的301代碼類似,會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到不同的位置,但不應(yīng)使用此代碼來(lái)告訴googlebot某個(gè)網(wǎng)頁(yè)或者網(wǎng)站已經(jīng)移動(dòng),因?yàn)間ooglebot會(huì)繼續(xù)抓取原有位置并編制索引。
-
303(查看其它位置): 請(qǐng)求者應(yīng)當(dāng)對(duì)不同位置使用單獨(dú)的 get 請(qǐng)求來(lái)檢索響應(yīng)時(shí),服務(wù)器返回此代碼。對(duì)于出head之外的所有請(qǐng)求,服務(wù)器會(huì)自動(dòng)轉(zhuǎn)到其它位置;
-
304(未修改): 自從上次請(qǐng)求后,請(qǐng)求的網(wǎng)頁(yè)未修改過(guò)。服務(wù)器返回此響應(yīng)時(shí),不會(huì)返回網(wǎng)頁(yè)內(nèi)容;如果網(wǎng)頁(yè)自請(qǐng)求者上次請(qǐng)求后再也沒(méi)有更改過(guò),應(yīng)將服務(wù)器配置為返回此響應(yīng)(稱為if-modified-Since HTTP標(biāo)頭)。服務(wù)器可以告訴 googlebot 自從上次抓取后網(wǎng)頁(yè)沒(méi)有變更,進(jìn)而節(jié)省帶寬和開(kāi)銷。
-
305(使用代理): 請(qǐng)求者只能使用代理訪問(wèn)請(qǐng)求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應(yīng),還表示請(qǐng)求者應(yīng)使用代理。
-
307(臨時(shí)重定向): 服務(wù)器目前從不同位置的網(wǎng)頁(yè)響應(yīng)請(qǐng)求,但請(qǐng)求者應(yīng)該繼續(xù)使用原有位置來(lái)響應(yīng)以后的請(qǐng)求,此代碼與響應(yīng) get 和 head 請(qǐng)求的<a href=""></a>代碼類似,會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到不同的位置,但不應(yīng)該 告訴googlebot 某個(gè)頁(yè)面或者網(wǎng)站已經(jīng)移動(dòng),因?yàn)?googlebot 會(huì)繼續(xù)抓取原有位置并編制索引。
PHP header 的7種用法
1. 跳轉(zhuǎn)頁(yè)面
header('Location:'.$url); //Location和":"之間無(wú)空格。
2. 聲明content-type
header('content-type:text/html;charset=utf-8');
3. 返回response狀態(tài)碼
header('HTTP/1.1 404 Not Found');
4. 在某個(gè)時(shí)間后執(zhí)行跳轉(zhuǎn)
header('Refresh: 10; url=http://www.php.cn/'); //10s后跳轉(zhuǎn)。
5. 控制瀏覽器緩存
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache");
6. . 執(zhí)行http驗(yàn)證
header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="Top Secret"');
7. 執(zhí)行下載操作
header('Content-Type: application/octet-stream'); //設(shè)置內(nèi)容類型 header('Content-Disposition: attachment; filename="example.zip"'); //設(shè)置MIME用戶作為附件 header('Content-Transfer-Encoding: binary'); //設(shè)置傳輸方式 header('Content-Length: '.filesize('example.zip')); //設(shè)置內(nèi)容長(zhǎng)度
推薦學(xué)習(xí):《PHP視頻教程》