Intereting Posts
Создать таблицу mysql с переменной php не работает Запрос ОЧЕНЬ медленный (> 30 секунд) в php, но быстрый при запуске запроса в phpmyadmin Преобразование значений разделенных запятыми значений в двойные кавычки получение переменной размера формы для javascript и PHP (AJAX) Удаление фреймов и загрузка содержимого в div Обновление данных на странице без обновления Показать Самые популярные теги продукта в виджетах виджета WooCommerce PHP: Как захватить экран окна браузера с помощью php? Как chmod папка, чтобы сделать ее доступной для записи на сервере в php WordPress Woocommerce Возвратный ключ атрибута продукта not value Как найти первый / второй элемент ассоциативного массива, когда ключи неизвестны? Ошибка PHP и MySQL. В строке 176 произошла ошибка: объект класса mysqli_result не может быть преобразован в строку будет ли эта процедура вычислять число строк? как я называю эту процедуру с php? Данные динамической диаграммы в Javascript и PHP нужна помощь в использовании кредитов facebook

PHP-перенаправление с переменными строки запроса HTTP

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 варианта:

  1. Добавьте свой URI перенаправления с $_SERVER['QUERY_STRING']
  2. Добавьте свой URI перенаправления с запросом, созданным самостоятельно : http_build_query($_GET);

Вариант 2. – Преимущества (+)

  • Кодирует параметры (по умолчанию PHP_QUERY_RFC1738 )
  • вы можете легко добавить (или удалить) некоторые параметры $_GET например:
    $_GET['new_param']="new value"; (Добавить)
    unset($_GET['param_to_remove']); с unset($_GET['param_to_remove']); (Удалить)
  • если среда (бог знает, почему) не предоставляет QUERY_STRING – вы, вероятно, все еще можете получить суперглобальное $_GET => независимое от окружающей среды
  • http_build_query() может фактически быть любым массивом или объектом, поэтому вы можете построить запрос $_GET like от $_POST или $o = new YourObject(); если необходимо
  • вы можете при необходимости изменить разделитель аргументов

Вариант 2. – Недостатки (-)

  • такой запрос здания может быть избыточным («ничего не значащий»), просто ненужным …
  • если запрос большой enaugh (возможно, некоторая атака?), это может повлиять на performace, потому что каждый раз будет массив, преобразованный в строку и закодированный

Для получения дополнительной информации см. 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 для этой задачи, вы можете быть более гибкими.