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

Как запретить внешнюю прямую ссылку на файлы с помощью htaccess?

У меня есть это в моем htaccess в папке public_html моего файлового сервера:

RewriteEngine On
RewriteBase /
ReWriteCond %{REQUEST_URI} ^/files/*
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite.net/.*$ [NC]
RewriteRule \.(gif|png|jpg|jar|sis|mp3|thm)$ - [F]

И у меня есть много папок и файлов в каталоге mysite.net/files, которые я хочу предотвратить от прямой загрузки с сайтов, отличных от mysite.net. Однако приведенные выше правила, похоже, не работают, несмотря на то, что я знаю, что файл .htaccess включен. В некоторых случаях он блокирует только изображения, но не файлы. Пожалуйста, скажите мне, что не так с этим сценарием, или могу ли я использовать любую другую директиву, чтобы запретить внешним сайтам постоянно похищать мои файлы. Спасибо

Помогает ли добавление ". *"?

RewriteRule .*\.(gif|png|jpg|jar|sis|mp3|thm)$ - [F]

Также ваша строка:

ReWriteCond %{REQUEST_URI} ^/files/*

означает (в конце) «косая черта ноль или более раз». Вы можете попробовать:

ReWriteCond %{REQUEST_URI} ^/files/.*

что означает «косая черта, затем любой символ ноль или более раз».

редактировать: Некоторые из ваших файлов могут иметь расширения в верхнем регистре. Вы можете попробовать:

RewriteRule .*\.(gif|png|jpg|jar|sis|mp3|thm)$ - [F,NC]