Запрет индексации https копий страниц сайта - очередной этап борьбы с борьбой поисковиков против дублей страниц. На этот раз Яндекс в один прекрасный апдейт поисковой базы каким то образом умудрился проиндексировать главную страницу по протоколу https.
Естественно, ему это не понравилось, да так, что в выдаче Яндекса по запросу site:gt-e.ru главная страница проиндексировалась целых 4 раза. Заодно он проиндексировал еще одну страницу три раза, но уже по протоколу http. Соответственно, провалились позиции по всем поисковым запросам.
Пришлось закрывать от индексации дубли страниц сайта по протоколу https.
Опять же немного подпортил включенный SSI при котором определить порт запроса пользователя можно определить только по содержанию переменной окружения HTTP_SSL.
Для проверки состояния переменных сервера при разных запросах необходимо создать файл с названием test.php, записать в него
Код:
<?php
phpinfo();
?>
Сохранить файл и записать в корневую папку сайта.
Затем посмотреть и сравнить содержание
http://www.имя_сайта.ru/test.php
и
https://www.имя_сайта.ru/test.php
Если HTTP_SSL при доступе по протоколу https принимает значение on то все нормально.
Для решения проблемы достаточно записать в файл .htaccess следующий текст
Код:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#замена файла robots.txt при доступе по https
RewriteCond %{HTTP:SSL} =on
RewriteRule ^robots.txt$ robots_https.txt
#редирект с учетом https
RewriteCond %{HTTP:SSL} !=on
RewriteCond %{HTTP_HOST} ^имя_сайта.ru
RewriteRule (.*) http://www.имя_сайта.ru/$1 [R=301,L]
RewriteCond %{HTTP:SSL} !=on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.имя_сайта.ru/ [R=301,L]
</IfModule>
Далее создаем файл
robots_https.txt
и записываем в него
Код:
User-agent: *
Disallow: /
Файл robots_https.txt записываете в корневой каталог сайта.
Таким образом страницы сайта будут запрещены к индексации поисковыми системами при обращении к ним по протоколу https.
При считывании файла robots.txt по протоколу https будет отдаваться содержимое файла
robots_https.txt.
Если необходима склейка (переадресация имя_сайта.ru => www.имя_сайта.ru) доменного имени без указания www и с указанием www в адресе домена, то необходима следующая запись
Код:
RewriteCond %{HTTP:SSL} !=on
RewriteCond %{HTTP_HOST} ^имя_сайта.ru
RewriteRule (.*) http://www.имя_сайта.ru/$1 [R=301,L]
RewriteCond %{HTTP:SSL} !=on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.имя_сайта.ru/ [R=301,L]
обеспечивает запрет редиректа страниц сайта с адресом домена без www на адрес домена с www при обращении по https.
имя_сайта необходимо заменить реальное доменное имя.