Редирект для интернет-магазина на Opencart: через плагин или htaccess

Редиректы для интернет-магазина на CMS Opencart можно выполнить добавив записи в файл htaccess, ознакомится с чем можно в статье ниже.

Как сделать редирект через файл htaccess для интернет-магазина на Opencart

Для того, чтобы перенаправить пользователя с одной страницы на другую требуется использовать следующую комбинацию:

Redirect 301 site.ru/page1/ site.ru/page2/

Где:

  • page1- страница которая будет переадресовывать;
  • page2 – открывающийся документ.

Важно! Можно записывать адреса в относительном виде, например, /page1/ и /page2/.

Также допускается использование конструкции:

Redirect permanent site.ru/page1/ site.ru/page2/

Для того, чтобы выполнить правило, потребуется посетить административную панель хостинга (или же зайти через FTP), где в корневой папке сайта на Opencart (public_html) лежит файл htaccess :

Файл htaccess у интернет-магазина на CMS Opencart

Как сделать перенаправление на другой домен?

В этом случае необходимо автоматически перекидывать всех пользователей с домена domain1.ru на domain2.ru при помощи функции:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.ru$

RewriteRule ^(.*)$ http://www.domain2/$1 [R=301,L]

Переадресация с http на https

При переезде сайта с http на https (установка SSL-сертификата) потребуется код, который не требует дополнительных модификаций:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Второй метод осуществляет перенос с http://domain.ru на https://domain.ru:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{HTTP_HOST} ^domain\.ru$

RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]

Третий способ выполняет аналогичную функцию, но отключает перенаправление для robots.txt:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{REQUEST_URI} !robots.txt

RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]

В 4-й версии конечным пунктом для пользователя станет https://www.domain.ru:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{HTTP_HOST} ^domain\.ru$

RewriteRule ^(.*)$ https://www.domain.ru/$1 [R=301,L]

Позволяет сделать форвардинг с http://www.poddomen.domain.ru на https://poddomen.domain.ru:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ https://poddomen.domain.ru/$1 [R=301,L]

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Последняя версия, дающая возможность сделать связь между http://poddomen.domain.ru на https://www.poddomen.domain.ru:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ https://www.poddomain.domain.ru/$1 [R=301,L]

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

301 редирект с домена без WWW на с WWW

В функции ниже осуществляется переход из www.poddomen.domain.ru на poddomen.domain.ru:

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]

</IfModule>

Если же первый способ не помог можно использовать данную версию:

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} !^poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]

</IfModule>

С www на без WWW

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ http://www.poddomen.domain.ru/$1 [R=301,L]

</IfModule>

Также имеется второй метод не требующий ввода доменного имени:

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

</IfModule>

C https на http

При необходимости сделать обратную интеграцию и перейти на незащищенную версию протокола можно воспользоваться:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} 1 [NC]

RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

301 редирект на http для одной страницы

В этой ситуации подойдет:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} 1 [NC]

RewriteCond %{REQUEST_URI} ^/нужная-страница$

RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Второй метод осуществляет общий переезд на защищенный протокол (https), но одна страница останется на старом протоколе (http). Этот способ подойдет для интеграции 1С Bitrix с 1С Предприятие, так как система не может работать с защищенным протоколом:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{REQUEST_URI} !^/необходимая-страница$

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTP:X-HTTPS} 1 [NC]

RewriteCond %{REQUEST_URI} ^/необходимая-страница$

RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Для готовой интеграции с 1С-Битрикс, формула позволяющая исключить директорию bitrix/admin/1c_exchange.php из общего правила:

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteCond %{HTTP:X-Forwarded-Proto} !https

RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC]

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Форвардинг на https для конкретной страницы

Для этой цели можно воспользоваться:

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:X-HTTPS} !1

RewriteCond %{REQUEST_URI} ^/Необходимая директория_страница$

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

С несуществующего файла

В этом случае можно будет применить:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www.)?domain.ru$

RewriteCond %{REQUEST_URI} ^/robots.txt$

RewriteRule ^(.*)$ /poddomen/script.php [R=301,L]

Также подойдет второй способ:

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} !^poddomen\.domain\.ru$ [NC]

RewriteRule ^(.*)$ http://poddomen.domain.ru/$1 [R=301,L]

Перенаправление на подкаталог

В этом случае возможно пербрасывать пользователей с poddomen.domain.ru на подкаталог poddomen.

Способ 1:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/poddomen
RewriteCond %{HTTP_HOST} ^poddomen.domain.ru$ [NC]
RewriteRule ^index.php(.*)$ /poddomen/$1 [L,QSA]



Способ 2:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^poddomen.domain.ru$
RewriteCond %{REQUEST_URI} !/poddomen/
RewriteRule ^(.*)$ /poddomen/$1 [L]

В случае, когда речь идет о www.poddomen.doamin.ru необходимо применить:

RewriteEngine on

RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?poddomen\.domain\.ru$

RewriteCond %{REQUEST_URI} !/poddomen/

RewriteRule ^(.*)$ /poddomen/$1 [L]

С любой страницы на главную

В этой ситуации поможет:

RewriteEngine On
RewriteBase /

RewriteRule ^(.*)$ index.php [L,QSA]

С поддомена на основной домен

Если требуется выполнить условие для всех поддоменов без исключения:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(.+).domain.ru$
RewriteRule (.*) http://site.ru/$1?region=%1 [L,R=301,QSA]

Когда речь идет о конкретном поддомене следует использовать:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^poddomen.domain.ru$ [NC]
RewriteRule (.*) http://site.ru/$1?region=poddomen [L,R=301,QSA]

Как проверить работу 301 редиректа?

Для этого можно использовать инструмент проверки ответа сервера Яндекса:

https://webmaster.yandex.ru/tools/server-response/

Здесь вводим адрес первой страницы и видим следующее:

Проверка 301 редиректа через сервис

Как видим правило применилось и работает корректно.

Возможные проблемы с сайтами Opencart (русской сборки OcStore)

При редактировании файла

Так как в русской сборке OcStore после установки файл имеет имя htaccess.txt следует для исправления выполнить следующую посетить корневую папку сайта и найти файл «.htaccess.txt».

Файл htaccess на сервере Opencart

Переименовываем его и удаляем часть «.txt», так, чтобы файл назывался «.htaccess».

Переименование файла htaccess на сервере Opencart
Редактирование файла htaccess в Opencart

Переходим в «Дополнения»-«Менеджер дополнений» и очищаем Кеш (кнопка в правом-верхнем углу).

Обновление кеша в интернет-магазине на CMS Opencart

Все готово.

При работе с HTTPS

В первую очередь следует проверить настройки магазина перед перенаправлением на https так как в противном случае сайт может работать некорректно или не работать вовсе.

Переход в настройки интернет-магазина на CMS Opencart

Далее переходим в сервер и выбираем.

Переход в сервер в настройках интернет-магазина на Опенкарт

Прокручиваем список и во вкладке «Безопасность» ставим «Да» у «Использовать SSL».

Включение настроек для работы SSL-сетификата на сайте на Опенкарт

После этого переходим в на сервер в корневую папку и проверяем файл «config.php».

Файл config.php на сайте на Opencart

В нем в части про HTTPS проверяем указан ли адрес сайта как «https://site.ru», если нет указываем.

Настройки файл config.php на сайте на Opencart для корретной работы версии https

Аналогично следует проверить корректность отображения административной части, что необходимо сделать перейдя в папку «Admin».

Переход в папку admin в файлах сайта на CMS Opencart

Теперь открываем еще один файла «config.php».

Файл config.php в папке admin на сайте на Opencart

Аналогично ищем ссылки на сайт с защищенным протоколом define и при необходимости исправляем на правильные (с https).

Настройки файл config.php на сайте на Opencart для корретной работы версии https административной панели

Подписывайтесь на наш канал в Яндекс.Дзен

Подписывайтесь на наши социальные сети

Добавить комментарий

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...