Разрешить/запретить обращение к изображениям с помощью .htaccess

Итак, у меня есть это в файле моего файла .htaccess, чтобы предотвратить хотлинкинг изображений, JS и CSS со всех других доменов.

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain\.com [NC]
RewriteRule \.(gif|jpe?g|js|css)$ - [F,NC,L]

Вопрос: Как бы выборочно разрешить хост-ссылку одному или двум доменам?

Ответы

Ответ 1

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?otherdomain\.com [NC]
RewriteRule \.(gif|jpe?g|js|css)$ - [F,NC,L]

Будет работать, как сказано.

"Refererr не является ничем, а referer не соответствует mydomain, а referer не соответствует otherdomain.

Если бы вы пытались сделать обратное (черный список - набор доменов из hotlinking), вы бы сделали что-то вроде

RewriteCond %{HTTP_REFERER} ^http://(www\.)?baddomain1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?baddomain2\.com [NC]
RewriteRule \.(gif|jpe?g|js|css)$ - [F,NC,L]

Ответ 2

Просто добавьте другое условие перед RewriteRule для каждого домена, который вы хотите разрешить.

RewriteCond %{HTTP_REFERER} !friendlysite\.com [NC]  

(по-видимому, вам все равно, если запрос выполняется через http или https или что-то еще, поэтому вы можете оставить это, чтобы сделать его более общим)

Ответ 3

Я знаю, что этой теме 5 лет, но у меня проблема. Я пытаюсь добавить домен типа "разрешить", принадлежащий другу, в строки предупреждения о горячей ссылке в моем файле htaccess, но он просто не работает.

Одна из строк в этом разделе моего файла htaccess (имена доменов изменены)

RewriteCond% {HTTP_REFERER}! ^http://www.mysitename.com/. * $ [NC]

и я попытался добавить строку RewriteCond% {HTTP_REFERER}! ^http://www.allowthisone.com/. * $ [NC]

но когда я проверяю ссылку .jpg на его веб-сайте, выдается сообщение об ошибке 500. Изображение определенно есть.

На его веб-сайте, когда я щелкаю правой кнопкой мыши и копирую ссылку jpg с изображением (..mysitename.com) прямо в мой браузер, она работает, но не тогда, когда я щелкаю ее на его веб-сайте.

Может кто-нибудь сказать мне, что я делаю не так?