Итак, основываясь на комментариях, я думаю, что смогу дать соответствующий ответ.
Итак, ваша цель - реагировать на вызываемый URL и перенаправлять на основе того, является ли URL «известным» вашей системе ($found
) илине?Если это так: верно ли, что вы хотите перенаправить в Google, если значение $found
равно true?Я не совсем понимаю цель этого - может быть, вы имеете в виду !$found
?Таким образом, все неизвестные запросы перенаправляются в Google?
Исходя из этих предположений, вы все равно можете отображать содержимое из другого файла PHP или HTML на своем собственном сервере без перенаправления клиента.
Предположим, пользовательские вызовыhttps://example.org/some/fancy/page
.Это будет перенаправлено на ваш redirect.php
, где вы можете прочитать часть some/fancy/page
из $_GET["l"]
.
Когда ваш файл JSON выглядит примерно так (пожалуйста, приведите реальный пример, если это предположение полностью неверно).
{
"some/fancy/page": "views/page1.html",
"some/other/page": "views/page2.html"
}
Ваш redirect.php может затем проверить этот словарь JSON на наличие известных и неизвестных запросов и перенаправить или загрузить контент на основе результата:
$called = $_GET["l"]; // contains "some/fancy/page"
$json = json_decode(file_get_contents("path_to_json"), true);
$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// Check if the called URL is part of your JSON file.
$found = isset($json[$called]);
if(!$found) { // Note the ! from my assumption
// We did not find this -> redirect to google
header('HTTP/1.1 301 Moved Permanently');
header(sprintf('Location: %s', 'https://www.google.com'));
} else {
// Page is found on the local server - load from the file listed in JSON
// (views/page1.html) and send it to the client.
echo file_get_contents($json[$called]);
/**
// In case your JSON contains external URLs, e.g. https://fancypage.org for "some/fancy/page", you can still use redirection
// This will, however, not end up on your own server and thus will not trigger the rewrite rule.
header('HTTP/1.1 301 Moved Permanently');
header(sprintf('Location: %s', $json[$called]));
**/
}