Правильный редирект на основной домен для Bitrix (через .htaccess)

Ох уж это SEO. Ох уж эти поисковые системы. Ох уж эти программисты!​

На днях один хороший знакомый попросил подключить к его сайту HTTPS. В принципе там всего делов тупо заплатить за сертификат, а потом написать в техподдержку. Но, нашлись умельцы, которые за это просили 9000 руб. Прошу заметить, в эту сумму стоимость сертификата не входила. Только работы.

Итак, HTTPS сертификат хостер поставил. Что дальше?

Предположим, основной домен сайта — domain.ru (без www).
Есть еще алиасы (псевдонимы) домен.рф и domen.ru.
Что получается? А получается, что на главную страницу сайта можно попасть по двенадцати ссылкам. Перечислю:

  • http://domain.ru/
  • http://www.domain.ru/
  • https://domain.ru/
  • https://www.domain.ru/
  • http://www.домен.рф/
  • http://домен.рф/
  • https://www.домен.рф/
  • https://домен.рф/
  • http://domen.ru/
  • http://www.domen.ru/
  • https://domen.ru/
  • https://www.domen.ru/

И так для каждой страницы, а их на сайте много! Т.е. поисковый робот по факту видит не один сайт, а двенадцать разных! И у каждого из двенадцати одинаковый контент, что естественно скажется на результатах ранжирования в поисковой выдачи не лучшим образом.

Что делать? Настроить редирект конечно. Чтобы в независимости от того по какому адресу пользователь запрашивает страницу, его принудительно перекидывало бы на https://domain.ru/

В этом не было бы особой проблемы, но! Дело в том, что сайт у знакомого на Bitrix. Это подразумевает обмен с 1С. Программист 1С утверждает, что данная версия этой программы не умеет работать с https, это раз. Ссылка на скрипт отвечающий за обмен прописана вообще для домена domen.ru Т.е. выгладит так http://domen.ru/bitrix/admin/1c_exchange.php

Ну на счет https я еще могу понять, а ссылку поменять не особенно сложно. Впрочем, проще сделать все на стороне сайта. Итак, открываю .htaccess и вписываю под строкой RewriteEngine On следующий код:

RewriteCond %{REQUEST_FILENAME} robots.txt$
RewriteRule ^([^/]+) $1 [L]
 
RewriteCond %{HTTP_HOST} !^domain\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange.php
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
 
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange.php
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

И всё.

Помогло? Зашли Админу на чай.
 

Поясню коротко. Первые две строки позволяют запрашивать файл robots.txt без редиректа. Это важно, чтобы поисковик мог скачать его по всем 12-ти адресов без перенаправлений.

Следующие три строки говорят, что если запрос пришел на любой домен кроме domain.ru, то его нужно переадресовать на https://domain.ru/, кроме случаев, когда запрашивают страницу /bitrix/admin/1c_exchange.php

Следующие четыре строки из той же серии, но редиректят всех, кто зашел на сайт не по протоколу HTTPS.

Вот, собственно, и вся премудрость.

Видоизменив данный код, вы легко можете настроить редирект на своем сайте и добавить страницы-исключения.

А кому помогло, зашлите пару рублей. Мне на чай, вам на удачу.

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

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