@inkyrein
Начинаю постигать WEB-программирование

Как сделать 301 редирект с GET?

Привет всем.
Подскажите пожалуйста,
столкнулся с проблемой с настройкой ЧПУ и 301 редиректа
На сайте есть страницы:
site.com/region/section/13 - это каталог с товарами, так же есть пагинация со страницами - site.com/region/section/13?page=2...
Мне нужно сделать ЧПУ и Редирект вида:
с site.com/region/section/13 на site.com/region/section/kuhonnaja-mebel, Но если появляется GET то еще и так:
site.com/region/section/13?page=1 на site.com/region/section/kuhonnaja-mebel?page=1.
Как это можно реализовать?
пробовал через:
$sru = strtolower($_SERVER['REQUEST_URI']);
$url_array = array(
	'/region/section/13' => '/region/section/kuhonnaja-mebel',
);
if(isset($url_array[$sru])){
	header('HTTP/1.1 301 Moved Permanently');
	header('Location: http://'.$_SERVER['HTTP_HOST'].$url_array[$sru]);
	exit;
}

редиректит так только с site.com/region/section/13 на site.com/region/section/kuhonnaja-mebel... Как GET учитывать?
  • Вопрос задан
  • 2313 просмотров
Решения вопроса 1
Evervess
@Evervess
$raw_uri = $_SERVER['REQUEST_URI'];
$uri_map = array(
    '/region/section/13' => '/region/section/kuhonnaja-mebel',
);
if (count($_GET)) {
    $tmp_uri = explode('?', $raw_uri);
    $uri['address'] = strtolower($tmp_uri[0]);
    $uri['request'] = '?' . $tmp_uri[1];
} else {
    $uri['address'] = strtolower($raw_uri);
    $uri['request'] = '';
}
if (isset($uri_map[$uri['address']])) {
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://' . $_SERVER['HTTP_HOST'] . $uri_map[$uri['address']] . $uri['request']);
    exit;
}


Так должно работать, не проверял
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
ilyaplot
@ilyaplot
PHP программист
Взять массив $_GET, превратить его в url и приклеить справа, не?
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Надо просто подумать.
Взять и представить мысленно, чем отличается
site.com/region/section/13?page=1
от
site.com/region/section/13

И потом подумать, как из первого получить второе.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 18:27
200000 руб./за проект
26 апр. 2024, в 18:24
80000 руб./за проект
26 апр. 2024, в 18:00
500 руб./за проект