如果您聽說過URL 重定向或 URL 轉(zhuǎn)發(fā),那么您應(yīng)該熟悉 PHP 重定向。如果不是,或者如果您需要復(fù)習(xí),重定向是網(wǎng)頁、表單或網(wǎng)站的轉(zhuǎn)發(fā)或重新路由。例如,您搜索了monsterhost.com/seotool,但卻被發(fā)送或重定向到monsterhost.com/seo。重定向通常用于實(shí)現(xiàn)多個(gè)目標(biāo),包括將特定網(wǎng)頁重新路由到新位置、在站點(diǎn)維護(hù)期間或停機(jī)或網(wǎng)站備份期間管理網(wǎng)站流量。當(dāng)您想擺脫“www”時(shí),也會(huì)進(jìn)行重定向。URL 的一部分,修改站點(diǎn)的 URL 結(jié)構(gòu)或?qū)⒂脩粲谰棉D(zhuǎn)發(fā)到不同的網(wǎng)站。
執(zhí)行 PHP 重定向的原因
使用重定向的原因有很多。這些范圍包括在停機(jī)或站點(diǎn)維護(hù)期間處理網(wǎng)站流量;將特定頁面重新路由到新位置或擺脫“www”。URL 的一部分。如果您希望更改網(wǎng)站的 URL 結(jié)構(gòu)或?qū)⒂脩粲谰棉D(zhuǎn)發(fā)到不同的網(wǎng)站,則需要重定向。
如何進(jìn)行 PHP 重定向?
設(shè)置 PHP 重定向是一個(gè)相當(dāng)簡(jiǎn)單的過程,并且標(biāo)頭功能至關(guān)重要。 首先在您要重定向的目錄中創(chuàng)建一個(gè)index.php 文件。
使用下面的內(nèi)容來實(shí)現(xiàn)這一點(diǎn)。
也可以寫成以下格式:
<?php header("位置:anotherDirectory/anotherFile.php"); ?>
' http://www.redirect.to.url.com/'或anotherDirectory/anotherFile.php”);?>任一文件的部分是您輸入希望用戶重定向到的 URL 的位置。還需要注意的是,文件類型不限于 HTML,范圍可以從 php、perl、python、cgi 到已編譯的 cgi 程序。
PHP 重定向的四個(gè)最佳實(shí)踐
1. 使用相對(duì) URL
有不同類型的重定向,例如我們?cè)谶@篇文章中探討的SSL和 PHP。還有用于執(zhí)行這些重定向的不同類型的 URL。這些包括相對(duì)和絕對(duì) URL。
絕對(duì) URL 是具有主機(jī)名的 URL,而相對(duì) URL 是沒有主機(jī)名的 URL。相對(duì) URL 僅在六年前作為 HTTP 的一部分進(jìn)行了標(biāo)準(zhǔn)化,因此它相當(dāng)新并且可以在現(xiàn)代瀏覽器中使用。但為了安全起見,在進(jìn)行重定向時(shí),建議您重定向到絕對(duì) URL。
2. 在向?yàn)g覽器寫入任何內(nèi)容之前調(diào)用 header 函數(shù)
這對(duì)于成功的重定向非常重要。瀏覽器必須首先接收 HTTP 標(biāo)頭才能進(jìn)行重定向。這甚至可以是 PHP 開始標(biāo)記之前的空行。不要忘記這一點(diǎn),否則會(huì)導(dǎo)致錯(cuò)誤消息。
3. 重定向后立即退出腳本
這與其說是一種要求,不如說是一種好的做法。但是很重要的一個(gè)。請(qǐng)記住,即使您發(fā)送了標(biāo)頭,腳本也會(huì)繼續(xù)執(zhí)行。這本身似乎沒什么大不了的,但發(fā)生的情況是,盡管腳本正在執(zhí)行,但瀏覽器永遠(yuǎn)不會(huì)看到重定向后的結(jié)果。
4.根據(jù)重定向類型發(fā)送HTTP狀態(tài)碼
有不同類型的重定向。有些像 302 是臨時(shí)的,而有些像 301 是永久性的。發(fā)送的狀態(tài)代碼與您的目標(biāo)重定向保持一致至關(guān)重要。
如果未指定,則為 302,即“找到”或“臨時(shí)移動(dòng)”
一般是使用 fore bug 瀏覽器插件生成的。如果您希望臨時(shí)重定向,這沒關(guān)系,但如果您希望重定向是永久的或其他,這不是好消息。為避免這種情況,請(qǐng)具體說明您的狀態(tài)代碼。
概括
進(jìn)行重定向的原因有很多。無論您是想在進(jìn)行維護(hù)時(shí)迎合您的用戶,還是在對(duì)您的網(wǎng)站或單個(gè)頁面進(jìn)行全面檢修時(shí)。但無論您的原因是什么,遵循最佳實(shí)踐以獲得最佳結(jié)果非常重要。