Как я могу переписать этот URL:
http://localhost/?=register
Чтобы выглядеть так?
http://localhost/index.php/Register
Ваш код перенаправления:
header('Location: /index.php/Register/',true,302);
exit;
Для доступа к / Register / value используйте:
$_SERVER['PATH_INFO']
После выполнения перенаправления с помощью команды header вы должны не забыть написать свой код для обработки этого URL.
/index.php/Register попытается загрузить файл «Register» внутри папки «/index.php/» … ошибка 404
Поэтому вам нужно будет использовать apache modrewrite, чтобы перенаправить эти «виртуальные папки» в централизованный скрипт, который сможет с этим справиться.
Примерно так на .htaccess:
RewriteEngine on
RewriteRule ^index.php/(.*)$ index.php
Затем в вашем index.php вы обработаете входящий URL-адрес, чтобы обнаружить этот файл, и выполните с ним все, что захотите.
Я обычно работаю со всем (перенаправляет все в /index.php), а затем разбиваю URL-адрес и обрабатываю его, чтобы получить любое количество виртуальных папок / файлов. Вот моя собственная функция для обработки любого входящего запроса:
function extractUri($uri="") {
if ($uri == "") $uri = isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] != "" ? $_SERVER['REQUEST_URI'] : "";
if ($uri != "") {
# removes query from request
if ($uri[0] != "/") $uri = "/".$uri; # ALWAYS START WITH /
$uri = explode("?",$uri);
$uri = str_replace("..",".",array_shift($uri)); # little exploit remover
$uri = explode("/",str_replace("//","/",$uri));
} else
$uri = array("/");
$context = array();
foreach ($uri as $part)
array_push($context,preg_replace("/(\.){2,}/","\.",$part)); # prevents ..
$action = array_pop($context); # file (with extension)
$original_action = $action; # preserve the original file with extension (I work w/o them)
$ext = "";
if ($action == "") $action = 'index'; # so if you are accessing folder/, then you probably want the index
else if (strpos($action,".")!==false) { # remove extension
$action = explode(".",$action);
$ext = array_pop($action);
$action = implode(".",$action);
$action = removeSimbols($action,true,false); # makes sure it is a valid filename, this function removes any weird character
}
return array($context,$action,$original_action,$ext); # returns the folder structure (array), the page/action, the page/action with extension, and said extension (lots of repetition to speed up later)
}
поэтому extractUri («/ index.php / Register») вернет:
Array ([0] => "/", [1] => "index.php"), "Register", "Register", ""