Использование 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
не позволяет мне это делать.
Заранее благодарим за помощь.
Ответы
Ответ 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 для блокировки списков каталогов, он блокирует доступ ко всем.
Ответ 2
в .htaccess
Options -Indexes
http://httpd.apache.org/docs/current/mod/core.html#options
Ответ 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>