Главный вопрос, который ставит заказчик перед переносом сайта с одной платформы на другую, это не скажется ли отрицательно перенос сайта на позициях в выдаче Яндекс и 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, то делаем редирект. Для остальных записей не делаем ничего — Битрикс и сам знает, что с ними сделать.
Надеюсь я смог чем-то помочь. Спасибо за внимание!