Bitrix

Перевод действующего сайта с другой CMS на 1С-Битрикс без выпадения страниц из индекса поисковых систем

Главный вопрос, который ставит заказчик перед переносом сайта с одной платформы на другую, это не скажется ли отрицательно перенос сайта на позициях в выдаче Яндекс и Google. Ведь в процессе переноса сайта меняются ссылки на страницы и естественно поисковая система после нескольких апдейтов индекса выкидывает недоступные страницы из индекса, а вот как скоро поисковая система проиндексирует новые страницы никто не может знать.

Метод решения этой проблемы всегда один, — нужно в .htaccess прописать редиректы со старой страницы на новую с отдачей заголовка 301 Moved Permanently — это даст понять поисковой машине, что страница, которую он запрашивает, теперь находится по другому адресу.

Выполняется в простейшем виде это через такую инструкцию в .htaccess :

Redirect 301 /old-page.html http://new-domain.ru/new-page.html
Однако, в 1С-Битрикс есть очень интересные функционал «Настройка правил обработки адресов» (/bitrix/admin/urlrewrite_list.php?lang=ru), которые позволяет задавать человекопонятные url. Но он не позволяет делать редирект на указанный адрес. Хотя можно научить его работать с редиректами. Вот мой способ:

При задании новой настройки ЧПУ появляются такие поля: условие, компонент, файл, правило. Поле «компонент» не является обязательным и в чаще всего не заполняется. Мы можем в него ставить маркер редиректа, например слово redirect. Таким образом, если нам нужно создать редирект со страницы /article.phtml?id=4421 на новую страницу /info/articles/detail.php?ID=5 , мы заполняем новое правило следующим образом:

Условие: #^/article.phtml\?id=4421#

Компонент: redirect

Файл: /info/articles/detail.php

Правило: ID=974

Итак, мы это заполнили, но работать это не будет, потому что мы не сделали обработку редиректа. Я ее написал в файле /bitrix/php_interface/dbconn.php .

$arUrlRewrite = array();
if(file_exists($_SERVER[‘DOCUMENT_ROOT’].»/urlrewrite.php»))
include($_SERVER[‘DOCUMENT_ROOT’].»/urlrewrite.php»);

foreach($arUrlRewrite as $rule)
if (preg_match($rule[«CONDITION»], $_SERVER[«REQUEST_URI»])  && $rule[«ID»]==»redirect»)

{

header(«HTTP/1.1 301 Moved Permanently»);
header («Location: http://».$_SERVER[«HTTP_HOST»].$rule[«PATH»].»?».$rule[«RULE»]);

}

 

В нескольких словах объясню как это работает. При создании нового правила в интерфейсе «Настройка правил обработки адресов» пересоздается файл urlrewrite.php в корне сайта, в котором указаны все обработки адресов для сайта, используемые Битрикс. Мы подключаем этот файл и проходим по массиву $arUrlRewrite, если нашли метку redirect, то делаем редирект. Для остальных записей не делаем ничего — Битрикс и сам знает, что с ними сделать.

Надеюсь я смог чем-то помочь. Спасибо за внимание!

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

Ваш электронный адрес не будет опубликован.Обязательные для заполнения поля отмечены *

18 − шесть =