Подтвердить что ты не робот

Использование htaccess, как ограничить просмотр содержимого каталога, но разрешить серверу использовать содержимое?

В частности, у меня есть файл htaccess, который запрещает кому-либо видеть содержимое каталога. Таким образом, никто не может увидеть мои 1000 изображений в www.example.com/images, используя:

deny from all
allow from 127.0.0.1

Однако я хочу использовать эти изображения на www.example.com, чтобы, <img src="images/thisimg.jpg" /> работает.

Надеюсь, я нахожусь в правильном направлении, но я ценю любую проницательность/перенаправление. Это похоже на: Как защитить все содержимое каталога, но получить доступ к php script, но я хочу связать эти изображения в этом каталоге и использовать deny from all не позволяет мне это делать.

Заранее благодарим за помощь.

4b9b3361

Ответ 1

Все, что вам нужно, чтобы люди не видели содержимое каталога, - это файл index.php или .html в этой папке. Любые запросы для yoursite.com/images будут загружать index.php, который вы укажете на фиктивную страницу.

index.html может быть что-то вроде:

<html><title>Forbidden!</title><body>Nothing to see here...</body></html>

или перенаправление script index.php:

<?php header('Location: /index.php'); exit(); ?>

Не используйте .htaccess для блокировки списков каталогов, он блокирует доступ ко всем.

Ответ 3

Вариант 1 (простой, но не предпочтительный) -

Вам не нужно создавать файл index, как этот -

<html>
  <title>Forbidden!</title>
  <body>
    <h1>Access Denied !!</h1>
  </body>
</html>

Ответ 4

Используйте что-то вроде этого в файле .htaccess:

 #
 ###################################################################
 ###                                                             ###
 ###                    Currently protection                     ###
 ###              images (jpg, jpeg, gif, png, bmp)              ###
 ###                       JavaScript (js)                       ###
 ###                Cascading Style Sheets (CSS)                 ###
 ###                                                             ###
 ###################################################################
 #
 <IfModule mod_rewrite.c>
 RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com/.*$ [NC]
 RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com$ [NC]
 RewriteRule .*\.(jpg|jpeg|gif|png|bmp|js|css)$ http://access-                    denied.us/hotlinks.html [NC,L]
 </ifModule>
 #

Это позволит вашим страницам загружать документы и изображения, которые вы хотите, останавливая все страницы elses от этого. Я использую это на всех моих сайтах, и он отлично работает.

Ответ 5

Простейшее решение: создайте пустую страницу index.html в папке с изображением:)

Ответ 6

Для меня я чувствую, что самый простой способ сделать это - с перенаправлением. В каталоге изображений просто создайте индексную страницу, а на индексной странице вы будете перенаправлять на страницу индекса сайта i.e

<?php
   header( 'Location: http://www.yoursite.com' ) ;
?>

Таким образом, всякий раз, когда кто-либо пытается получить доступ к странице изображения напрямую, они попадают к вашему корню сайта.

Ответ 7

Если бы это был я, я бы просто удостоверился, что реферер - www.example.com, этот вид его основного использования.

Ответ 8

Предложение Magicianeer является лучшим для этой проблемы. Если ваши изображения разбиты на подпапки, вам нужно будет поместить индексный файл в каждый из них. "Параметры -Indexes" необходимо выполнить только один раз в корневом каталоге.

Ответ 9

deny from all позволяет файлам использоваться сценариями на стороне сервера, но ограничивает полный доступ к сети.

Ответ 10

в этой папке, которую вы хотите запретить запретить доступ создайте файл с именем index.php и вставьте этот код

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access This Folder
on this server.</p>
</body></html>