Дата публикации : 2024.01.02
Автор:Виноградов Александр
Рейтинг статьи:
Редиректы Битрикс если не помог htaccess
В файлеlocal/php_interface/название-сайта/init.phpпрописываем нужные нам редиректы
Вы можете использовать нужные Вам директивы, ненужные удалить.
<?php
AddEventHandler("main", "OnBeforeProlog", "MyOnBeforePrologHandler", 50);
function MyOnBeforePrologHandler()
{
$siteHost = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] ;
$siteUrl = $siteHost . $_SERVER['REQUEST_URI'];
/* Переадресации :*/
/* с http на https */
if (empty($_SERVER['HTTPS']))
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".'https'. '://' . $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
die();
}
/* с www на без www */
if (preg_match('/\/\/www/', $siteUrl) )
{
$siteUrl = str_replace('www.', '', $siteUrl);
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$siteUrl);
die();
}
/* Склейка главной переадресуем с /index.php, /index.html на главную страницу */
if (trim($_SERVER['REQUEST_URI'],'/') == 'index.php' or trim($_SERVER['REQUEST_URI'],'/') == 'index.html') {
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$siteHost);
die();
}
/*Если главная страница прекращаем работу скрипта */
if ($_SERVER['REQUEST_URI'] == '/' ) {
return;
}
/*Если на главной есть слеш переадресуем на главную без слеша */
if (preg_match('/^\/{1,}$/Uis', $_SERVER['REQUEST_URI']) ) {
$url = $string = rtrim($siteUrl, '/');
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$url);
die();
}
/*Если есть get параметры прекращаем работу скрипта (иногда это нужно)*/
if ($_SERVER['QUERY_STRING']!='' or $_SERVER['QUERY_STRING']=='&' or $_SERVER['QUERY_STRING']=='?' )
{
return;
}
/*Множественные слеши в конце url редирект на 1 слеш в конце*/
if ( preg_match('/[^\/]\/{2,}$/Uis', $_SERVER['REQUEST_URI']) )
{
$url = $string = rtrim($siteUrl, '/');
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$url.'/');
die();
}
/*Нет слеша в конце вообще тогда редирект на 1 слеш в конце*/
if ( !preg_match('/[^\/]\/{1,}$/Uis', $_SERVER['REQUEST_URI']))
{
/*за исключением файлов*/
if ( !preg_match('/^.*\.(jpg|jpeg|png|gif|webp|zip|rar|gzip|svg|js|css|scss)$/i', $_SERVER['REQUEST_URI']) )
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$siteUrl.'/');
die();
}
}
}