Назад | Перейти на главную страницу

.htaccess Hotlinking Блокировка всех запросов

Я хочу заблокировать хотлинкинг файлов PDF на сайте. Раньше я использовал этот метод, чтобы заблокировать хотлинкинг для zip-файлов на другом сервере. Вот мой .htaccess:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com/.*$ [NC]
RewriteRule \.(pdf)$ - [F,NC]

Это почти идентичный код другому сайту, на котором я его использую, за исключением того, что у меня есть «zip» вместо «pdf». По какой-то причине на этом сервере apache он блокирует не только pdf-файлы, но и все остальное. Файлы PHP и HTML, доступные через браузер, дают запрещенную ошибку. Может ли кто-нибудь увидеть что-то, чего мне не хватает в этом блоке, или есть идеи, что может быть причиной этого?

Диагностика: что произойдет, если вы поставите .htaccess содержащий только RewriteEngine on? Мы проверяем, есть ли какие-то дурацкие правила, определенные сервером, которые кто-то оставил без дела, полагаясь на RewriteEngine отключены, чтобы отключить их.

Комментарии показывают, что это так. Потрясающие. Единственное, что я могу сказать вам попробовать, это решения, в которых не используются mod_rewrite, лайк:

SetEnvIf Referer . hotlink=1
SetEnvIfNoCase Referer ^http://(www\.)?domain\.com/.*$ !hotlink
<LocationMatch *.pdf>
    Order allow,deny
    Deny from env=hotlink
    Allow from all
</LocationMatch>

Пытаться:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com/.*$ [NC]
RewriteRule .*\.pdf$ - [F,L]

Попробуйте это, на моем сервере отлично работает:

#Enables mod_rewrite, otherwise all Rewrite directives below will not work
RewriteEngine on

#Hotlink protection
RewriteCond %{HTTP_REFERER} !^http://mysite.com/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://mysite.com$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mysite.com/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mysite.com$      [NC]
RewriteRule .*\.(pdf|zip)$ - [F,NC]