Что делать если после переезда на https упала выгрузка с 1С. Битрикс

Что делать если после переезда на https упала выгрузка с 1С

Из коробки 1С не умеет работать с сайтами на https и поэтому после редиректа сайта выгрузка перестаёт работать. Правильным выходом, конечно, будет обратиться к специалистам 1С чтобы они сделали доработку, тогда ваша выгрузка снова заработает. Но что делать если нет возможности обратиться к специалистам 1С, а выгрузка нужна здесь и сейчас?! Попытаюсь ответить на этот вопрос, но замечу что это временный способ, и он не рекомендуется.

О выгрузке (обмене с сайтом)

Как вы поняли из заголовка речь сейчас идёт о сайте под управлением CMS «1С Битрикс Управление сайтом», так что я пишу эту статью с поправкой что речь идёт о конкретной CMS.

Чтобы 1С выгружал на сайт ему нужно обратиться к файлу, который расположен по адресу /bitrix/admin/1c_exchange.php относительно корня сайта. Следовательно, чтобы выгрузка заработала нужно чтобы этот файл был доступен по http.

Редирект

опустим вы пользуетесь вот таким редиректом:

RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Думаю, не нужно вам рассказывать в подробностях, ведь данная статья понадобиться вам только если вы уже перешли на https и выгрузка перестала работать. Если вам нужно узнать подробнее о переходе на https то прочитайте эту статью.

Чтобы выгрузка заработала нужно редирект изменить на этот:

RewriteCond %{SERVER_PORT} !^443$ 
RewriteCond %{REQUEST_URI} !/bitrix/admin/1c_exchange.php 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Тогда ваш файл станет доступен по http и выгрузка снова заработает.

Ещё пример:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https [OR]
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteCond %{REQUEST_URI} !/bitrix/admin/1c_exchange.php
RewriteRule ^(.*)$ https:// example.com/$1 [R=301,L]

Тут уже пример в котором учтён редирект с www.

Способ для IP

Вы можете сделать доступным сайт по http, не только для одного файла, но и для целого сайта для пользователя с определённым IP. Я считаю, что это более безопасный способ, но у него есть и недостаток, вам нужен статический IP, что не всегда возможно, например если в вашей компании стоит балансировщик нагрузки на сеть и вы можете подключиться под разным ip. Для пользователей ноутбуков это будет не актуально т.к. они подключаются из разных сетей.

Редирект для исключения по IP, пример

RewriteCond %{HTTP:X-Forwarded-Proto} !=https [OR]
RewriteCond %{HTTP_HOST} ^www.example.ru$ [NC] [OR]
RewriteCond %{REMOTE_ADDR} !=178.110.15.26
RewriteRule ^(.*)$ https://example.ru/$1 [R=301,L]

не забываем поставить свой ip

Для 1С

Как я уже упоминал, приведённые примеры должны быть временными решениями. Следовательно нужно чтобы были проведены изменение настроек в 1С. О настройках сертификатов вы можете прочитать в статье по ссылке.

P.S

Если вы прочитали статью до конца напишите в комментарии пригодился бы вам инструмент для массовой проверки редиректов. Заранее спасибо!)

Работаем на Битрикc и у нас всё будет хорошо. А пока подписывайтесь на мой ВК и Instagramm (ссылки в подвале), пользуйтесь моим сервисом строки, ищите вхождения ключевых фраз. Поддержите проект, зарегистрируйтесь по реферальной ссылке на хостинге beget, он действительно классный, о нём вы можете прочитать в этом отзыве.