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 для этой задачи, вы можете быть более гибкими.