У меня есть решение, даже если это не очень красиво, потому что это оставляет ошибку по умолчанию 403 документами измененный, даже если изображение не является hotlinked:
Это входит в apache2.conf:
SetEnvIfNoCase Referer "livejournal.com" hotlink
<FilesMatch ".(gif|jpg|jpeg|png)$">
ErrorDocument 403 /server404/no_hotlink.php
</FilesMatch>
<FilesMatch ".(gif|jpg|jpeg|png|mpg|avi|flv)$">
deny from env=hotlink
</FilesMatch>
Alias /server404 "/var/www/_404"
<Directory "/var/www/_404">
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>
Мы использовали путь/server404 для ошибочного serverwide 404 документа в течение некоторого времени, таким образом, у нас уже было это. Вы могли также назвать его 403 или GlobalNoHotlink или независимо от того, что Вы хотите.
Для изображений (первый FilesMatch) мы устанавливаем "запрещенный" ErrorDocument на файл PHP в нашем/server404 каталоге. Затем мы проверяем, является ли это hotlinked (там, мы также делаем это для видеофайлов, таким образом два тега FilesMatch), и запретите доступ если hotlinked.
Это входит в/var/www / _ 404/no_hotlink.php - файл PHP обратился к запрещенному изображению:
<?PHP
$file = dirname(__FILE__) . '/_default/no_hotlink.png';
header('HTTP/1.1 200 OK', true, 200);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header('Content-length: ' . filesize($file));
header('Content-type: image/png');
readfile($file);
?>
Это работает - но это не столь красиво, как я хотел бы иметь его, так все еще будет довольно другими решениями.
У меня есть что-то вроде этого в моем httpd.conf:
RewriteCond "%{HTTP_REFERER}" !=""
RewriteCond "%{HTTP_REFERER}" "!^http://www.mydomain.com/.*$" [NC]
RewriteRule "\.(jpg|png)$ - [F]
Вы, возможно, должны были бы использовать это также, если Вы не использовали RewriteConds и RewriteRules прежде:
RewriteEngine On
Я нашел это googleing или в Поваренной книге Apache. Не может больше помнить.
Единственный эффективный способ сделать, с модификацией, переписывают правила. Если ссылающийся домен не от Вашего собственного домена, то перепишите URL изображения, чтобы быть тем, который является несуществующим, где-то в другом месте, или прозрачный gif 1 пкс на 1 пкс.
Много людей делает это с изображением, в котором не говорится 'Вожделение, приятель' или подобный
проверка ссылающегося домена не всегда работает, некоторые прокси, или даже браузеры разделяют заголовок HTTP_REFERER из запросов HTTP.
намного лучше проверить некоторые cookie в Ваш генерирующий содержание код [например, index.php, который генерирует картинную галерею], и начните работу, модификация - переписывают или apache2 уровень, если cookie установлен на математическое ожидание.