atm Я использую следующие четыре строки, чтобы перенаправить пользователя на другую страницу на моем веб-сайте:
<?php header("Status: 301 Moved Permanently"); header("Location: ./content/index.html"); exit; ?>
но есть проблема с использованием переменных строки запроса HTTP, таких как http://< url >?param=blah
они не присоединяются к URL-адресу понятным образом.
Есть ли разумный ход для реализации этого?
Привет
<?php header("Status: 301 Moved Permanently"); header("Location:./content/index.html?". $_SERVER['QUERY_STRING']); exit; ?>
Чтобы сделать перенаправление и убедитесь, что дополнительный вопросительный знак не отображается, когда строка запроса не передается, используйте следующую
function preserve_qs() { if (empty($_SERVER['QUERY_STRING']) && strpos($_SERVER['REQUEST_URI'], "?") === false) { return ""; } return "?" . $_SERVER['QUERY_STRING']; } header("Status: 301 Moved Permanently"); header("Location: ./content/index.html" . preserve_qs());
Я хотел бы добавить еще один вариант …
В любом случае, как говорили другие, использование ( .htaccess ) mod_rewrite , вероятно, будет лучшим вариантом.
Однако,
там, конечно, может быть много ситуаций, когда вам нужно это делать в PHP => у вас есть 2 варианта:
$_SERVER['QUERY_STRING'] http_build_query($_GET); Вариант 2. – Преимущества (+)
$_GET например: $_GET['new_param']="new value"; (Добавить) unset($_GET['param_to_remove']); с unset($_GET['param_to_remove']); (Удалить) $_GET => независимое от окружающей среды http_build_query() может фактически быть любым массивом или объектом, поэтому вы можете построить запрос $_GET like от $_POST или $o = new YourObject(); если необходимо Вариант 2. – Недостатки (-)
Для получения дополнительной информации см. http://www.php.net/manual/en/function.http-build-query.php – сайт руководства PHP о функции http_build_query() которая Returns a URL-encoded string.
Использование $_SERVER['QUERY_STRING'] и добавление его в конец вашего перенаправления может быть тем, что вы ищете.
EDIT: Только что заметил, что я немного опоздал с ответом.
Во-первых, почему бы не перенаправлять с помощью mod rewrite?
Но в любом случае вы можете выполнить $ _SERVER ['QUERY_STRING'] до конца вашего URL-адреса
Добавьте $_SERVER['REQUEST_URI'] или QUERY_STRING . Сделайте print_r($_SERVER); для получения дополнительной информации о запрошенном URL-адресе.
Я бы также предложил использовать mod_rewrite для этой задачи, вы можете быть более гибкими.