Как поставить страницу 403, когда пользователь пытается получить доступ к файлу напрямую? (.htaccess)

Я использую сервер Apache, считайте, что это мой сайт: www.domain.com.

Я сохранил все свои файлы, изображения, видео в субдомене, таком как-> http://sub.domain.com/file.jpg

Я получаю доступ ко всем файлам (например, изображениям, видео) из поддомена.

Если какой-либо пользователь пытается получить доступ к моему файлу непосредственно в адресной строке (http://sub.domain.com/file.jpg), он должен показывать 403 запрещенную страницу.

Если какой-либо пользователь пытается получить доступ к моему веб-сайту ( www.domian.com ), он должен разрешить доступ.

Я попытался выполнить код .htaccess,

Options -Indexes
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sub.domain.com [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sub.domain.com.*$ [NC] 
RewriteRule \.(gif|jpg|png|avi|mp3|swf")$ - [F]

но проблема в том, что это также дает 403 запрещенный результат, когда я захожу на свой сайт.

ОБНОВЛЕНИЕ:

index.html в (домен.com)

 <html>
 <body>
   <h1>Example Page</h1>
   <img src="http://sub.domain.com/file.jpg">
 </body>
 </html>

Вывод: (когда я пытаюсь получить доступ к «domain.com»)

Example Page

изображение не загружается. он показывает 403 запрещено в "консоли".


person Reezz    schedule 02.02.2015    source источник


Ответы (1)


http:// не будет присутствовать в реферере, только доменное имя. Вместо этого попробуйте следующее:

RewriteEngine On 
RewriteCond %{HTTP_REFERER} !^(www\.)?sub\.domain\.com [NC] 
RewriteRule \.(gif|jpg|png|avi|mp3|swf)$ - [F]
person arco444    schedule 02.02.2015
comment
Какой URL вы тестируете? Не загружается вся страница? У вас есть другие правила? - person arco444; 02.02.2015
comment
Это означает, что правило работает. У вас нет реферера sub.domain.com, поэтому его отображение запрещено. Попробуйте протестировать с помощью curl или консоли REST, вручную установите реферер и посмотрите, что произойдет. - person arco444; 02.02.2015