Это случалось со всеми. Вы просматриваете Интернет и видите одно из своих изображений на другом сайте. Вы сразу же возмущаетесь тем, что человек не спросил вашего разрешения или даже не указал вам заслугу в создании изображения. Вы можете задаться вопросом: «Что нужно сделать, чтобы это не повторилось?» Существуют приложения для хотлинкинга, но за покупку лицензии обычно взимается плата. Вот два способа запретить людям использовать хотлинки на ваши изображения.
Изменить файл.htaccess
Лучший способ сделать это — изменить файл.htaccess. Он должен находиться в главном каталоге веб-сайта. Откройте его с помощью текстового редактора и добавьте следующий код:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com(/)?.*$ [NC] RewriteRule .*\.(gif|jpe?g|png|bmp)$ [F,NC]
RewriteCond разрешит сайтам (здесь должен быть URL-адрес вашего сайта), которые смогут использовать изображения на вашем сайте. Если вы хотите, чтобы поисковые системы могли отображать ваши изображения в функции поиска изображений, добавьте следующий код:
RewriteCond %{HTTP_REFERER} !google. [NC] RewriteCond %{HTTP_REFERER} !msn. [NC] RewriteCond %{HTTP_REFERER} !yahoo. [NC]
Возможно, вам также следует подумать о добавлении своего RSS-канала, чтобы ваши изображения отображались в вашем RSS.
RewriteRule — это файлы, на которые вы не хотите, чтобы люди использовали хотлинкинг.
Использовать PHP-код
Если вы предпочитаете использовать PHP. Создайте новый файл PHP, и следующий код позволит вам сделать то же самое, что и изменить файл.htccess:
<?php $dir='secret-unknown-name-here/'; if ((!$file=realpath($dir.$_GET['file'])) || strpos($file,realpath($dir))!==0 || substr($file,-4)=='.php'){ header('HTTP/1.0 404 Not Found'); exit(); } $ref=$_SERVER['HTTP_REFERER']; if (strpos($ref,'http://www.yoursite.com/')===0 || strpos($ref,'http')!==0){ $mime=array( 'jpg'=>'image/jpeg', 'png'=>'image/png', 'bmp'=>’image/bmp', ); $stat=stat($file); header('Content-Type: '.$mime[substr($file,-3)]); header('Content-Length: '.$stat[7]); header('Last-Modified: '.gmdate('D, d M Y H:i:s',$stat[9]).' GMT'); readfile($file); exit(); } header('Pragma: no-cache'); header('Cache-Control: no-cache, no-store, must-revalidate'); include($file.'.php'); ?>
Первое, что нужно сделать, это заменить «secret-unknown-name-here» на что-то такое, о чем никто, кроме того, кому вы хотите предоставить доступ, не сможет догадаться. Убедитесь, что вы создали каталог с тем же именем. Там, где написано «http://www.yoursite.com/», замените это URL-адресом вашего собственного веб-сайта. Добавьте расширения изображений, для которых вы не хотите разрешать хотлинкинг, где вы видите jpg, png и bmp. Любые файлы, для которых вы не хотите разрешать хотлинкинг, поместите их в секретный каталог.
Самый лучший и простой способ запретить людям использовать прямые ссылки на ваши изображения — это изменить файл.htaccess. Это быстро и просто по сравнению с кодированием метода PHP. Впрочем, какой путь — решать вам. С другой стороны, хотлинкинг может быть полезен для поисковой оптимизации (SEO), поэтому, возможно, вам не стоит быть слишком строгим в этом вопросе, если вы практикуете SEO. Однако на самом деле вам решать, как вы справляетесь с хотлинкингом, и это поможет вам в этом.
Примечание редактора. Описанный выше метод работает тогда и только тогда, когда изображения размещены на вашем собственном сервере. Если вы используете сторонние сервисы, такие как Amazon S3, описанные выше методы не будут работать.
Изображение предоставлено: Земальф