@Dmitry2590

Как сделать 301 редирект средствами php?

Добрый вечер! На сайте есть urlы вида:
https://test.ru/categories/test
https://test.ru/categories/test-0-2-kg
https://test.ru/categories/test1/test2
https://test.ru/categories/test1/testovyi-tovar-1-...
https://test.ru
У которых нет слэша на конце
Т.е. любая страница которая имеет categories и в конце url у которой нет слэша должна переадресовываться на тот же адрес со слэшем.
Например
https://test.ru/categories/test на https://test.ru/categories/test/
https://test.ru/categories/test-0-2-kg на https://test.ru/categories/test-0-2-kg/
https://test.ru на https://test.ru/
и т.д.
Доступа к htaccess нет, нужно сделать в php скрипте 301 редиректы.
Как сделать редирект средствами php на те же самые страницы, для всех таких страниц с такими же url только со слэшем в конце?
Может можно как-то это сделать с помощью регулярки?
$uri = trim($_SERVER[REQUEST_URI]);

if ($uri == '/categories/test') {
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://test.ru/categories/test");
exit();
}

Вот нужно сделать тоже самое только для любых таких ссылок, которые содержат categories
и для ссылки https://test.ru
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 2
cr1gger
@cr1gger
Тупые вопросы порождают тупые ответы (с)
header("HTTP/1.1 301 Moved Permanently");
Ответ написан
$request = explode('?', $_SERVER['REQUEST_URI'], 2);
if (preg_match('/[^\/]$/', $request[0])) {
    http_response_code(301);
    header('Location: https://example.com' . $request[0] . '/' . (isset($request[1]) ? '?' . $request[1] : ''));
    exit;
}
Ответ написан
Ваш ответ на вопрос

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

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