(htaccess) как предотвратить прямой доступ к файлу по URL-адресу?
Это мой второй пост на ту же проблему. Потому что предыдущий пост в пример.
Ок давайте скажем еще раз, я использую Apache и у меня есть пример веб-папки (на моем Localhost), как:
В папке, файлы будут:
- .HTML-код
- образец.jpg
- .htaccess
индекс".формат html" будет просто включать:
<html>
<body>
<img src="sample.jpg" />
</body>
</html>
когда я запускаю сайт в http://localhost/test/
, там будет просто показывать образец изображения.jpg ' на странице.
ТОГДА ПРОБЛЕМА ЗДЕСЬ:
- Я хочу, чтобы изображение не отображалось как
http://localhost/test/sample.jpg
непосредственно в строке url.
Примечание:
После одного дня получения ответов ниже, я обнаружил, что все решения логически работают, но проблема с Firefox. Я имею в виду, ниже приведены ответы предоставление решения при тестировании на каждом браузере, но не с Firefox.
4 ответа:
попробуйте следующее:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] RewriteRule \.(gif|jpg)$ - [F]
возвращает 403, если вы получаете доступ к изображениям напрямую, но позволяет им отображаться на сайте.
Примечание: возможно, что когда вы открываете какую-то страницу с изображением, а затем копируете путь этого изображения в адресную строку, вы можете увидеть это изображение, это только из-за кэша браузера, на самом деле изображение не было загружено с сервера (от Даво, полный комментарий ниже).
правило росипова работает отлично!
Я использую его на живых сайтах для отображения пустого или специального сообщения ;) вместо прямого доступа к файлам я бы предпочел немного защитить от прямого просмотра. Я думаю, что это веселее, чем 403-запрещено.
Итак, принимая правило росипова, чтобы перенаправить любой прямые запрос к файлам {gif,jpg,js,txt} в 'messageforcurious':
RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd.*$ [NC] RewriteRule \.(gif|jpg|js|txt)$ /messageforcurious [L]
Я рассматриваю это как вежливый способ запретить прямой доступ, скажем, к CMS разумный файлы как xml, javascript... с учетом безопасности: для всех этих ботов, которые сегодня царапают веб, мне интересно, что их algo сделает из моего "messageforcurious".
на основе ваших комментариев выглядит так, что вам нужно:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost/ [NC] RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,NC]
Я проверил его на моем localhost и, кажется, работает нормально.
прежде всего, найдите, где находится основной конфигурационный файл apache httpd.conf находится. Если вы используете Debian, он должен быть здесь:
/etc/apache/httpd.conf
. Используя какой-либо редактор файлов, например Vim или Nano, откройте этот файл и найдите строку, которая выглядит следующим образом:Options Includes Indexes FollowSymLinks MultiViews
затем удалите индексы word и сохраните файл. Строка должна выглядеть так:
Options Includes FollowSymLinks MultiViews
после этого перезапустите apache (например, /etc/init.D / перезапуск apache в Debian). Вот так!