PHP 重新導向失效修復
最近,把以前的程式拿出來,準備移植到新的舊平台上,怎麼說呢?程式很舊,用的環境很舊,偏偏作業系統很新,而程式很老,只能用老的套件,這有什麼問題嗎?問題就在新的作業系統本身不提供老的套件,也就是說,老程式就算會跳舞也沒舞臺了
另外還發現人也老了…還有就是修舊如舊也是得花很多工夫的… 能修好嗎?問題是
工作環境:
Ubuntu Server 22 LTS
docker: lamp stack
PHP 5.5
光是修這個重新導向可能就要花好多功了,因為之前寫的時侯用了很多跳轉的做法
找到了個不用自已折騰那麼多的做法,把要跳轉的部份從原本的 header(Location: ...) 換成
redirect_rel($relative_url) 就行了
function server_url()
{
$proto = "http" .
((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "s" : "") . "://";
$server = isset($_SERVER['HTTP_HOST']) ?
$_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
return $proto . $server;
}
function redirect_rel($relative_url)
{
$url = server_url() . dirname($_SERVER['PHP_SELF']) . "/" . $relative_url;
if (!headers_sent())
{
header("Location: $url");
}
else
{
echo "<meta http-equiv=\"refresh\" content=\"0;url=$url\">\r\n";
}
}
就行了嗎?好多地方要換啊,沒換的都會停在原本的網頁上…
至少找到路了,希望不要花太多生命在 debug 上,還一大堆東西等著除錯呢!移植果然是很花生命的…
收工!
留言
張貼留言