在編寫 PHP 程序時(shí),經(jīng)常會遇到需要重定向的情況。在 HTTP 協(xié)議中,狀態(tài)碼 301 表示永久重定向,意味著被請求的資源已經(jīng)被移動(dòng)到新的位置。本文將詳細(xì)講述如何在 PHP 代碼中使用 301 狀態(tài)碼進(jìn)行重定向,以及在哪里加入這段代碼。
首先,讓我們來看一個(gè)具體的例子。假設(shè)我們有一個(gè)舊的網(wǎng)址 old_site.com,現(xiàn)在將其重定向到新的網(wǎng)址 new_site.com。我們可以在 PHP 代碼的頂部加入以下代碼:
header("HTTP/1.1 301 Moved Permanently"); header("Location: https://new_site.com"); exit();以上代碼中,第一行使用 header 函數(shù)設(shè)置 HTTP 頭部,指定了狀態(tài)碼為 301。第二行則使用 header 函數(shù)設(shè)置新的重定向目標(biāo),即新的網(wǎng)址 new_site.com。最后,使用 exit 函數(shù)來終止當(dāng)前腳本的執(zhí)行。 當(dāng)用戶訪問舊的網(wǎng)址 old_site.com 時(shí),服務(wù)器會返回這段代碼,并告訴瀏覽器需要進(jìn)行永久重定向。瀏覽器接收到這個(gè)消息后,會立即跳轉(zhuǎn)到新的網(wǎng)址 new_site.com。 除了在頂部加入代碼外,我們還可以在其他地方使用 301 重定向。比如,當(dāng)用戶提交表單之后,我們可能需要將其重定向到成功頁面。下面是一個(gè)示例:
if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 表單處理邏輯 header("HTTP/1.1 301 Moved Permanently"); header("Location: https://new_site.com/success"); exit(); }在上面的代碼中,我們首先判斷當(dāng)前請求的方法是否為 POST。如果是的話,就執(zhí)行表單的處理邏輯,并在處理完成后使用 header 函數(shù)進(jìn)行 301 重定向。這樣,用戶提交表單后,瀏覽器會跳轉(zhuǎn)到新的成功頁面。 需要注意的是,進(jìn)行 301 重定向時(shí),必須在輸出任何內(nèi)容之前進(jìn)行。如果在輸出內(nèi)容之后進(jìn)行重定向,會導(dǎo)致報(bào)錯(cuò)。因此,我們可以將重定向的代碼放在腳本的最前面,或者在使用 301 重定向之前先使用 ob_start 函數(shù)開啟輸出緩沖區(qū)。 總結(jié)一下,在 PHP 代碼中使用 301 重定向是很常見的需求。通過使用 header 函數(shù),我們可以設(shè)置 HTTP 頭部并指定狀態(tài)碼為 301。然后,使用 header 函數(shù)設(shè)置新的重定向目標(biāo),并使用 exit 函數(shù)來終止腳本的執(zhí)行。需要注意的是,進(jìn)行重定向時(shí)要確保在輸出任何內(nèi)容之前進(jìn)行,并可以考慮使用輸出緩沖區(qū)來確保代碼的正確執(zhí)行。