For web-developers

Создание 301 Redirect в 1C Bitrix если не работает редирект урлов с query_string в .htaccess

Создание 301 Redirect в Bitrix если не работают урлы query_string в .htaccess

Сегодня вечером столкнулся с проблемой. После переноса и ре дизайна моими коллегами сайта на 1C Битрикс(который я мягко скажем не недолюбливаю) понадобилось сделать 301й редирект со старых адресов основных каталогов на новые. Пробовали и Redirect 301 /category http://web-site.ru/new-category и permanent и RewriteRule. Хоть это вопрос к правилам работы модуля apache mod_rewrite но Битрикс(его настроенный .htaccess) не хотел обрабатывать адреса с указанными GET параметрами. То есть урлы с query_string - не переадресовывает, а без - работают. Ссылку вида "/catalog/goods/list.php?SECTION_ID=761" - ни в какую не хотел перекидывать на новый адрес.

Пришлось импровизировать ;-) В прочем такая импровизация у меня не впервые, за 2 года работы в СЕО-компании, мы с моими коллегами: сео-оптимизатором и программистом перекопали десятки самописных движков расположенных на разных серверах и написанных на разных фреймворках. Так что вот вам хитрые костыли для редиректа на PHP хоть для 1C Битрикса хоть для сайта на MyNameFramework.

Создаем файл seo-redirect.php и в нем пишем следующий код:



Далее подключаем этот файл в шапке основного файла отвечающего за работу движка. В 1C Bitrix с которым возникла проблема я подключил данный файл данным образом: в папке /bitrix/header.php добавил в самом верху документа строку:



И указал список список адресов нуждающихся в редиректе. Мы просто сверяем текущий URI с адресом нуждающимся в переадресации и если значения совпадают то с помощью header делаем дело!

В интернете так и не нашел решение данной проблемы на Битриксе, а тема поднимается не на одном форуме. Кто то советует купить модуль для движка за 560 гривен, кто то советует модуль короткие ссылки то же не бесплатный. А мы с вами работаем головой ;)

14417 Просмотров Комментариев: 6

Ксения

Ответить

Спасибо! Единственный способ,который реально сработал!

Анатолий

Ответить

А у меня один раз сработал. Потом сайт стал недоступен. www.olatola.ru Пришлось откатываться. Куда копать. Спасибо.

Weltmeister

Ответить

Столкнулся с такой же проблемой - и вот наконец-то нашёл решение! Спасибо, всё работает как надо.

Sergey

Ответить

1С-Битрикс: Управление сайтом 17.0.3 ставил через самый простой вариант правил Redirect 301 в htaccess - работает редирект

Конь Будулая

Ответить

Обычные редиректы работают. А тут речь идет о ссылках вида "/catalog/list.php/?CID=1". Автор предложил отличное решение, взял на вооружение.

Artur

Ответить

Отличное решение, спасибо! Redirect 301 в htaccess не корректно срабатывал. Только в этом примере происходит 302 редирект. Дополню. Что бы редирект был с кодом 301, нужно добавить перед if строку header("HTTP/1.1 301 Moved Permanently"); Теперь код ответа 301. Проверить код ответа можно в яндекс вебмастере или других сервисах.