@alexei555

Как сделать редирект с подстановкой на php?

Пожалуйста подскажите как записать подстановку при редиректе ссылок такого типа
https://имя-сайта.ru/index.html?etext=2202.G-JrdtI...
на https://имя-сайта.ru/index.html

У меня сначала заполняется массив, потом выполняется функция редиректа
array('/что-меняем.html', 'https://на-что-меняем.ru'),
А с подстановкой не получается.
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 3
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
<?php
if(
    str_starts_with($_SERVER['REQUEST_URI'], '/index.html') 
    && $_SERVER['REQUEST_URI'] != '/index.html') {
        header("Location: /index.html");
        exit;
}


Пояснение:
1. если запрос начинается с /index.html, но содержит что-то помимо /index.html то перенаправляем на чистый /index.html
Ответ написан
Комментировать
@Fourgotten
Берете строку адреса, выполняете замену ненужного — гуглите работу со строками, поиск и замену.

То, что вам нужно "отсечь", называется query string

Самое простое — разбить строку функцией explode по символу "?"

Для более продвинутой замены есть регулярки
preg_replace
Ответ написан
Комментировать
@alexalexes
Вы используете PHP сервер, а пути в url ведут к статичным html, а не на index.php.
Допустим, по index.html сервер выполняет некий скрипт в index.php (допустим, вы настроили htaccess).
То в этом скрипте все компоненты адреса можно получить через $_SERVER и отредиректить, куда надо:
$protocol = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
$host = $_SERVER['HTTP_HOST'];
$path = $_SERVER['SCRIPT_NAME']; 
/****/
// Что-то сделать с $protocol, $host, $path а может что-то еще забрать из $_GET, $_POST, $_FILES....
/****/
header('location: '.$protocol.'://'.$host.$path);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы