[英]PHP header(location:) redirect with root directory
有沒有辦法創建header('Location:');
從根目錄開始的路徑。
例如:
formaction="/cert/forms/sessions/session-inc-info.php"
要么
include($_SERVER['DOCUMENT_ROOT'].'/cert/forms/sessions/session-inc-info.php');
cert是我的根目錄文件夾
我一直在嘗試代碼
header('Location:'.$_SERVER['DOCUMENT_ROOT'].'/cert/forms/sessions/session-inc-info.php);
和
header('Location:/cert/forms/sessions/session-inc-info.php');
唯一對我../
是使用../
header('Location:../../../session-inc-info.php');
但這對我來說很難,因為我有很多文件夾和子文件夾。 我有很多必須重定向的腳本。
謝謝。
所以這是示例文件夾結構
所以content.php
將有一個重定向到session.php
的按鈕,我已經完成了,現在當session.php
腳本有一個header('Location:');
必須重定向到dashboard.php。 現在這是我的問題。 我現在不知道如何創建路徑
CERT ---->儀表板-----> dashboard.php
header("Location: http://".$_SERVER['HTTP_HOST'].$formaction;
location應包含URL,而不是服務器文件路徑
理論上,您可以在應用程序的根目錄下創建一個PHP文件,並將其調用為您喜歡的任何內容:例如
redirect.php
。 然后在這個redirect.php
,你可以放一些看起來像這樣的代碼:
<?php
// CREATE AN ARRAY THAT WITH NUMERIC KEY
// THAT WILL CORRESPOND TO THE FILE YOU WISH TO REDIRECT TO (ACTUALLY LOAD)
// SINCE THIS IS A PSEUDO REDIRECT:
$fileMap = array(
0 => "./file-1.php",
1 => "./file-2.php",
2 => "./file-3.php",
3 => "./file-4.php",
4 => "./file-5.php",
5 => "./file-6.php",
6 => "/cert/forms/sessions/session-inc-info.php",
7 => "./../../session-inc-info.php", //<== YOU MAY KEEP ADDING TO LIST
);
// CHECK THAT THERE IS A GET PARAM WITH NAME: to
if(isset($_GET['to'])){
$fileKey = $_GET['to']; //<== GET THE `to` PARAM FROM $_GET
$loadableFile = $fileMap[$fileKey]; //<== TRANSLATE `to` KEY TO A LOADABLE FILE
// IF THE FILE [$loadableFile] EXISTS, LOAD IT
// OTHERWISE REDIRECT TO MAIN-APPLICATION PAGE (HOMEPAGE)
if(file_exists($loadableFile)){
require_once $loadableFile;
}else{
header("location: index.php"); //<== ASSUMES index.php IS THE MAIN FILE.
exit;
}
}
// IF ALL FAILS, STILL REDIRECT TO THE MAIN-APPLICATION PAGE
header("location: index.php"); //<== ASSUMES index.php IS THE MAIN FILE.
然后,在您希望執行重定向的每個頁面上,您可以執行以下操作:
<?php
// ASSUMING YOU WANT TO RE-DIRECT TO: `./../../session-inc-info.php`
// AS YOU CAN SEE FROM THE `$fileMap` ARRAY, `./../../session-inc-info.php`
// HAS THE KEY OF "7"
// NOW ALL YOU CAN DO IS SIMPY APPEND "?to=7" TO `redirect.php`
// IN THE `header()` METHOD LIKE THIS:
header("location: redirect.php?to=7");
exit;
/*EXPECTED TO LOAD THE FILE: `./../../session-inc-info.php`
注意:
這實際上不是重定向(因為它基本上只是從給定的位置/路徑加載[包括]文件,但是因為它似乎正在嘗試加載一些文件,如:/cert/forms/sessions/session-inc-info.php
,假設這可能是一個選項。 要做一個真正的重定向:只需使用header()函數直接傳遞給它重定向的確切URL-Location。
干杯和好運......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.