Я хочу заблокировать хотлинкинг файлов 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]