Редирект с google images
Недавно задумался над тем как же все таки бороться с гуглом, который после нового дизайна гугл картинок перестал отдавать трафик сайтам с которых он берет картинки.
В этом посте я приведу пример кода для .htaccess, после моих экспериментов все заработало, но есть недостатки.
Рассмотрим пример нажатия на кнопку Открыть в полном размере.
По нажатию на кнопку гугл открывает саму картинку и тем самым не перенаправляет трафик на сайт которому она принадлежит, от этого то и страдают вебмастера. У гугл картинок трафик на самом деле не большой, но все есть, и нам он очень нужен, поэтому я решил провести эксперимент и попробовать вернуть трафик с гугла.
Я не ставил на свои сайты ниже приведенный код, так как мне это просто ни к чему, однако если у вас есть картинки, то данный метод вы просто обязаны знать.
У вас есть свои сайт? Предлагаем воспользоваться интересными инструментами по нанесению логотипов на ручки или другие бытовые предметы иным словом Тампопечать uson-promopen.ru/application-of-logo
Суть основной проблемы:
Порыскав в логах аппача, я понял что гугл не передает реферер если пользователь переходит на картинку не посредственно по нажатию на кнопку «Открыть в полном размере», а это очень нехорошо, так как обычно с помощью .htaccess мы привязываем условия именно по рефу. Поэтому, если все же размещаем ниже приведенный код, нам понадобится еще одно условие, которое сделает исключение для нашего сайта.
Работа кода:
Нажали на кнопку «Открыть в полном размере», httaccess понимает что реф не передается и это не наш сайта, а адрес к которому обращаются выглядит следующим образом
site.ru/images/data/pic.jpg
Так как это картинка и условие написано именно для них, то отсылаем юзера на обработчик, который в свою очередь сделает редирект скажем на морду сайта. В итоге мы получим пользователя, пусть он и не получил то что хотел, но раз в гугле искал, то пускай и у нас поищет.
В случае если передается реф и открывают картинку с другого сайта, можно сделать редирект именно на ту страницу которой и принадлежит картинка.
Смотрим код.
RewriteCond %{HTTP_REFERER} ^
RewriteCond %{HTTP_REFERER} !^https?\:\/\/(www\.)?domain\.([a-z]+)
RewriteRule ^(.*)images\/(.*)\/(.+\.(jpg|jpeg))$ $1test.php?img=$1 [NC,L]
Там где domain на домен в разных зонах, если не нужно то убрать.
24 комментария
вот как выглядит файл .htaccess
RewriteEngine On
Options +FollowSymLinks
— редирект с www на без него
RewriteCond %{HTTP_HOST} ^www\.сайт\.com
RewriteRule ^(.*)$ сайт.com/$1 [R=permanent,L]
-защита от фишинга
RewriteCond %{HTTP_HOST} !^(www.)? сайт.com$
RewriteRule ^$ google.com [R]
-редирект с несуществующих страниц на главную
ErrorDocument 404 blognewsart.com
-вставляю Ваш код
RewriteCond %{HTTP_REFERER} ^
RewriteCond %{HTTP_REFERER} !^https?\:\/\/(www\.)? сайт\.([a-z]+)
RewriteRule ^(.*)images\/(.*)\/(.+\.(jpg|jpeg))$ $1test.php?img=$1 [NC,L]
и создал пустой файл test.php
в котором только Ваша строка
<?php
header( 'Location: /', true, 307 );
вот мой сайт http:// blognewsart. com
поменять на
прописать
Затем перейди по адресу site.ru/test.php
Если редирект произойдет то все в порядке.
т.е. внутри файла test.php будет следующее
да редирект работает. т.е. я сделал blognewsart.com/test.php
и он переправил на site.ru
значит проблема в .htaccess?
blognewsart.com/data_images/fiji/fiji-01.jpg
соответственно вместо fiji идут могут идти любые названия
файл .htaccess я привел к виду
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^
RewriteCond %{HTTP_REFERER} !^https?\:\/\/(www\.)?blognewsart\.([a-z]+)
RewriteRule ^(.*)data_images\/(.*)\/(.+\.(jpg|jpeg))$ $1test.php?img=$1 [NC,L]
но увы при нажатии в гугле на открыть в полном окне или в англ версии гугла View image — открывается картинка сразу
Читай в восстановленных комментах scriptland.com.ua/blog/seo/21.html#comment57
ПС. На сервере без nginx только что проверил, работает всё.
test.php?img=$1
т.е. в test.php можно принять название так
В таком случае необходимо искать по базе данных по полю где находится картинка, для получения ссылки на пост, т.е. где информация о посте находится. Обычный SELECT запрос, ну или с LIKE по определенному полю
Что то вроде
Затем по полученным данным (где можем узнать URL поста) передаем в редирект
<?php
$image = $_GET['img'];
echo $image;
«SELECT * FROM post WHERE image LIKE '%{$image}%'»;
Header( «HTTP/1.1 302 Moved Temporarily» );
Header( «Location: sitе.ru/». $row['url'] );
просто вот в таком виде не работает, если только опять мне в техподдержку писать, чтобы что-то исправили
Практически
Нужно подключится к базе данных, выполнить этот SELECT и получить данные о посте в котором находится данная картинка.
Затем по полученным данным из базу сформировать URL для перехода на страницу поста, этот URL нужно прописать сюда