SEO редирект на PHP

2k
Алексей,
SEO редирект на PHP

Одним редиректом с http на https, с www на без www, с index.php на /

Одним редиректом с http на https, с www на без www, с index.php на /, с /section на /section/, с IP (123.123.12.12) на домен (site.ru), а так же убирает двойной слеш.

Добавляем в init.php

global $APPLICATION;


if (

	// Когда применять правило
	mb_strlen($_SERVER["SERVER_NAME"]) > 0 &&
	!defined('ADMIN_SECTION') &&
	mb_strpos($APPLICATION->GetCurPage(false), '/personal/') === false &&

	// Если адрес подходит под одно из правил
	(
		filter_var($_SERVER['HTTP_HOST'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false ||
		$_SERVER["HTTPS"] != 'on' ||
		mb_strpos($_SERVER["SERVER_NAME"], 'www.') !== false ||
		mb_strpos($_SERVER["REQUEST_URI"], '/index.php') !== false ||
		(mb_strpos($_SERVER["REQUEST_URI"], '?') !== false && mb_strpos($_SERVER["REQUEST_URI"], '/?') === false && mb_strpos($_SERVER["REQUEST_URI"], '.') === false) ||
		(mb_strpos($_SERVER["REQUEST_URI"], '?') === false && mb_substr($_SERVER["REQUEST_URI"], -1) != '/' && mb_strpos($_SERVER["REQUEST_URI"], '.') === false) ||
		mb_strpos($_SERVER["REQUEST_URI"], '//') !== false
	)

) {
	// Формируем правильный URL
	if (mb_strpos($_SERVER["REQUEST_URI"], '?') === false) {
		$_SERVER["REQUEST_URI"] .= '/';
		$_SERVER["REQUEST_URI"] = str_replace('//', '/', $_SERVER["REQUEST_URI"]);
	} elseif (mb_strpos($_SERVER["REQUEST_URI"], '?') !== false && mb_strpos($_SERVER["REQUEST_URI"], '/?') === false) {
		$_SERVER["REQUEST_URI"] = str_replace('?', '/?', $_SERVER["REQUEST_URI"]);
	}
	$_SERVER["REQUEST_URI"] = str_replace('//', '/', $_SERVER["REQUEST_URI"]);

	$redirect = 'https://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
	$redirect = str_replace('www.', '', $redirect);
	$redirect = str_replace('/index.php', '/', $redirect);
	// И делаем 301 редирект
	LocalRedirect($redirect, false, "301 Moved Permanently");

}

По времени срабатывания идентично варианту через .htaccess, но вместо 2-3 редиректов происходит всего 1.

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 17 апреля 2017 | Обновлено 22 февраля 2023
web-сервер, делаюИМ, seo
Поделиться
Похожие статьи
Резервное копирование по FTP протоколу
Помимо облачного резервного копирования от битрикс я, также, отправляю резервные копии на удаленный ...
Читать дальше » 0
Алексей,
Отправка почты через gmail
Не нравится yandex? Можно отправлять через google. Мне такой вариант подошел больше, т.к. google упо...
Читать дальше » 0
Алексей,
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Одним редиректом с http на https, с www на без www, с index.php на /