Я пытаюсь написать "окончательный" анти горячие ссылки .htaccess ...
Вы можете найти много примеров / учебных пособий / генераторов в сети, но многие из них неправильные или неполные (или даже оба).
Это функции, которые я ищу:
- Должен блокировать горячие ссылки для списка расширений файлов, когда HTTP_REFERER является сторонним сайтом.
- Необходимо разрешить горячие ссылки для текущего домена (duh), не кодируя его в .htaccess.
- Для текущего домена он должен работать под http и https.
- Для текущего домена он должен работать с www и без www.
- Должен быть в состоянии добавить домены исключений к этим правилам (как наш друг Google), и эти домены должны работать с http и https, а также с www или без www.
Это то, чего я достиг до сих пор:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|zipx?)$ - [NC,F]
</IfModule>
Мои вопросы:
- Как избежать жесткого кода
mydomain.com
в .htaccess? (Было бы здорово иметь возможность развернуть этот .htaccess на всех моих доменах без необходимости изменять его для каждого из них.) - В моем RewriteRule
gif|jpe?g|png|zipx?
эквивалентноgif|jpg|jpeg|png|zip|zipx
право? (Извините, все еще новичок в регулярных выражениях.) - Видите ли вы что-нибудь плохое в моем .htaccess, о котором я не знаю?
Для # 1 я знаю, что это несколько возможно. Самый близкий я нашел этот фрагмент, который удаляет www из URL без жесткого кодирования домена. Есть ли способ использовать этот метод для моего вопроса № 1?
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]
Обновить:
Мне известны решения, которые будут служить изображением с водяным знаком вместо обычного. Но я не ищу такого решения. Я хочу универсальное решение (обслуживать 403 ошибки), которое будет работать для всех видов двоичных файлов (zip, exe, iso, jpg, png, gif ...).
Ответы:
Независимо от того, что вы делаете, вы будете «тратить» циклы ЦП (чтобы определить, авторизован ли сайт-реферер (тот, который выполняет связывание) или нет, вы должны выполнить некоторую обработку данных запроса).
Единственное, что вы можете сделать, это сохранить пропускную способность, тратя при этом минимум циклов ЦП.
В Apache Docs есть несколько примеров, которые делают именно то, что вы хотите. Вот этот:
кажется наиболее применимым (и не требует полного веса mod_rewrite).
Вы можете добавить дополнительные действительные источники с дополнительными
SetEnvIf
иAllow
директивами.источник
%{HTTP_HOST}
для меньшего разбора регулярных выражений), чтобы вставить хост URL-адреса в ваш набор правил, который должен купить вам динамические локальные домены (тщательно тестировать), но вам все равно придется усердно -код "хороших" внешних реферреров, таких как Google (по рефереру, пользовательскому агенту, IP и т. д.)Как насчет написания правила, согласно которому, если referer неизвестен (запрещен), просто вызовите файл Php, в котором вы передаете изображение в качестве параметра, а в файле Php просто выделите большой красный: «этот файл взят из MYWEBSITE.COM и не имеет официального разрешения для показа здесь ".
Что касается вашего вопроса, сделайте ваше правило глобальным. Поправьте меня, если я ошибаюсь, но если правило объявлено перед любым vhost, оно будет применено ко всем vhost (своего рода «правило по умолчанию»).
И другая идея проста: просто перенаправить в файл Php (здесь
filter.php
), который будет смотреть на авторизованном сайте и вернуть нужный файл, если все в порядке:В
filter.php
только нагрузках динамически список виртуального хоста или что - то вроде этого:источник
Cloudflare может вам помочь: http://www.cloudflare.com
Это, однако, работает только для изображений, но это то, что вам нужно.
Защита Hotlink
Автоматически включите горячую ссылку для ваших изображений, чтобы предотвратить ссылки за пределами сайта. Реферерам, которые не находятся в зоне и не являются пустыми, будет отказано в доступе. Поддерживаемые расширения файлов: GIF, ICO, JPG, JPEG и PNG.
Защищено: http://mydomain.com/images/pic.jpg Чтобы обойти: http://mydomain.com/images/hotlink-ok/pic.jpg
источник
Вопрос 1:
вопрос 2:
вопрос 3
источник
Или использовать CoralCDN муравей, чтобы народная горячая ссылка на содержание их сердца?
источник