Обработка редиректов в Битрикс

Дата: 14 января /

Ищем файл и в самом начале добавляем код для перенаправления

/bitrix/modules/main/include/prolog.php

Пример кода

//Редирект с новостей старого сайта
if ($_GET['id'] != ”) $id = $_GET['id'];
if ( ($id > 1) && ($id < 76350) )
{
$URL=”http://newsite.ru/news/”.(100000+$id).”/”;
header (“Location: $URL”,TRUE,301);
die(“Location: $URL”);
}

if ( ($id > 76350) && ($id < 85579) )
{
$URL=”http://oldsite.ru/news/index.php?id=$id/”;
header(“HTTP/1.0 404 Not Found”);
header (“Location: $URL”);
die(“Location: $URL”);
}

require_once(dirname(__FILE__).”/../bx_root.php”);

if(file_exists($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT.”/html_pages/.enabled”))
{
define(“BITRIX_STATIC_PAGES”, true);
require_once(dirname(__FILE__).”/../classes/general/cache_html.php”);
CHTMLPagesCache::startCaching();
}

require_once(dirname(__FILE__).”/prolog_before.php”);
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT.”/modules/main/include/prolog_after.php”);

Статьи по теме:

No related posts.

Метки: ,

Рубрика: Bitrix

Comments 4 комментария

 

  1. stepgr:

    А как же обновления системы?
    На сколько я знаю папка /bitrix/modules/ обновляется при обновлении Битрикса и все изменения могут затереться.

    Я сделал так:
    — в файле .htaccess:
    #условие для подключения файла с редиректом
    RewriteCond %{QUERY_STRING} productID=[0-9]*$
    #редирект на файл с запрашиваемого index.php
    RewriteRule ^index.php /redirect.php [L]

    Что происходит:
    — запрос вида http://site.ru/index.php?productID=142 перенаправляется на http://site.ru/redirect.php?productID=142,
    — в файле redirect.php — любая обработка адресов, можно как в Вашем примере выше.

    Причем в .htaccess перенаправление идет внутрее, т.е. браузер пользователя (читай поисковмк) никаким образом не информируется сервером о перенаправлении.
    А вот в redirect.php уже говорим необходимым статусом о редиректе.

  2. admin:

    Соглашусь с Вами, что использовать mod_rewrite, для таких задач предпочтительнее, чем править код движка. Однако это просто пример, в реальном проекте были более интересные условия выборки. За пару лет использования, проблем не возникло.

  3. Кирилл:

    Для этих целей в корне есть файл urlrewrite.php там пишутся все правила перенаправления
    например
    «#^/news/([0-9a-z\\-]+)/(.*)#»,
    «RULE» => «ELEMENT_CODE=\$1″,
    «ID» => «»,
    «PATH» => «/news/detail.php»,
    ),
    );
    ?>
    И теперь в $_REQUEST можно взять ELEMENT_CODE а адрес будет типа /news/#ELEMENT_CODE#/

  4. Алексей:

    Коллеги, для управления редиректами в Битрикс есть и более простой инструмент — это модуль Редирект Мастер.

    Модуль позволяет через удобный интерфейс управлять редиректами (создавать, редактировать, удалять).
    Поддерживаются как простые редиректы (с А в Б), так и более сложные редиректы с вложенностью, которые очень удобны при реорганизации каталога товаров.
    Общие редиректы www/no-www или http/https также удобно настраиваются через модуль.

    Одно из последних возможностей — автоматически создаваемые редиректы при реорганизации в инфоблоках.
    При этом поддерживается и многосайтовость Битрикса.

    И это только малая часть возможностей Редирект Мастера ;)
    Более подробно с полным перечнем возможностей можно ознакомиться на официальной странице модуля:
    https://atlant2010.ru/modules/redirekt-bitrix/
    
    А для партнеров Битрикс у нас предусмотрены скидки! :)

Оставить комментарий