Содержание

Как настроить запрет доступа к файлу, каталогу и сайту через htaccess

Многие пользователи серверов Apache для настройки работы сайта используют файл конфигураций htaccess. С одной стороны, нельзя назвать это решение мудрым и стоящим, поскольку чересчур наполненный файл htaccess может навредить скорости работы сервера. Но некоторые опции этого конфигурационного документа сложно настроить без использования файла htaccess, например, ограничение доступа к файлу, каталогу или сайту в целом. В приведенной ниже статье вы узнаете, как использовать эту функцию файла htaccess, и для чего она нужна.

Кому нужен запрет доступа и как им пользоваться

Стоит учитывать, что файл htaccess позволяет не только делать запрет доступа сразу ко всему сайту, но и создавать белые и черные списки пользователей. То есть вы сможете, к примеру, закрыть доступ для некоторых IP. Точно так же вы сможете снять запрет только для выбранных вами IP, создав тем самым белый список пользователей. Но зачем вообще использовать эту функцию?

Порой обстоятельства так складываются, что к сайту нельзя никого подпускать. К примеру, когда на нем ведутся какие-то важные техработы. В этот момент вы можете заблокировать доступ для каждого пользователя, кроме своего IP. Тогда посетители не будут присутствовать на ресурсе, когда он в нестабильном состоянии. Кроме того, используя черный список пользователей, вы сможете запретить доступ к сайту для IP недоброжелательных посетителей, которые спамят, флудят, ругаются и плохо обзываются о вашем портале.

Таким образом, вы сможете закрыть свой сайт от нежеланных гостей, создав подобие бан-листа. И во всем этом вам поможет файл htaccess с его незаменимыми директивами.

Как запретить доступ к файлу, каталогу, сайту через htaccess

Для управления уровнем доступа к сайту, файлу или папке вам необходимо будет использовать директивы Deny и Allow. Первая директива нужна, чтобы запретить доступ, а вторая — чтобы разрешить. Во многом эти директивы зависят от того, куда вы поместите файл htaccess. Если он будет расположен в корневом каталоге, то запрет или разрешение будет действовать на весь сайт целиком. Если же вы загрузите htaccess в какую-то папку, то опции Deny и Allow будут действовать на каталог, в котором находится, а также на внутренние папки. Именно таким образом и блокируют доступ к определенным директориям и разделам сайта.

Синтаксис директив запрета и разрешения предельно прост. Начинать опцию следует со строки Order Deny, Allow. Она обозначает активацию функций Deny и Allow. А в следующих строках вы должны указать конкретно, какие условия доступа вы планируете установить. Так, чтобы закрыть доступ для всех, вам нужно прописать всего две строки:

Order Deny,Allow - открытие функции.
Deny from all - указание правила.

Нижняя строка говорит: «Запретить (deny) для (from) всех (all)». Точно таким же образом вы можете вместо Deny прописать Allow для активации противоположной опции. Но поскольку эта опция активирована по умолчанию, нет смысла ее дополнительно указывать в htaccess. Allow from скорее используют для того, чтобы указывать исключения, то есть чтобы сформировать белый список пользователей.

Чтобы открыть доступ только для некоторых IP, вам нужно сначала закрыть сайт или каталог для всех остальных. Вот пример создания белого списка для двух адресов IP:

Order Deny,Allow
Deny from all
Allow from 136.68.81.3, 135.67.82.1 - IP писать через запятую.

По аналогии с написанной функцией вы сможете блокировать только определенные адреса IP. Только для этого вам нужно будет сначала прописать разрешение для всех через Allow from all, а потом указывать через Deny from IP-адреса, либо названия хостов, для которых доступ строго воспрещен.

Для ограничения прав на файл через закрытие доступа, вам нужно создать отдельный документ htaccess, и поместить его в директорию, где содержится файл. Директива запрета для файла выглядит примерно так же, как опция ограничения доступа для сайта или каталога. Разница только в том, что для ограничения файла вам понадобится специальный тег . В открывающем теге необходимо указать название объекта, доступ к которому следует ограничить. Вот пример запрета для всех пользователей к файлу passvd.txt:

<Files "passvd.txt"> - тег с именем файла
Order Deny,Allow - открытие опции
Deny from all - правило директивы
</Files> - закрытие тега

Теперь вам осталось поместить htaccess в каталог, где содержится файл passvd.txt, и никто не сможет добраться к нему через сайт. Как показывает практика, обычно доступ к файлу блокируют не полностью, а указывают исключения для доверенных IP-адресов. К примеру, вы сможете указать ограничение для всех, кроме своего IP, чтобы вы смогли потом скачать файл с паролями. Вот пример такого ограничения:

<Files "passvd.txt">
Order Deny,Allow
Deny from all
Allow from 144.66.55.2
</Files>

Если в каталоге содержится не один файл, который вам нужно защитить, а несколько, то вы можете прописать сразу много директив для каждого отдельного объекта. Но это неудобно. Кроме того, много опций в htaccess нагружают сервер, потому куда разумнее активировать другую блокировку — запрет доступа по типу файлов в каталоге, а не по их наименованию. Вам нужно будет использовать точно такую же конструкцию директив, только вместо имени файла необходимо через символ «|» указывать расширения, которые пользователи не смогут скачать с данной папки. Вот пример тег запрета для загрузки картинок определенного формата:

<Files "\.(jpg|jpe?g|ico)$">
Директивы
</Files>

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

Учтите, что многие пользователи используют не статический IP, а динамический, потому указывать один адрес в запрете глупо. Куда разумнее писать в запрет диапазон IP-адресов. Для этого найдите Whois-сервис и определите CIDR IP-адреса, а затем укажите его в запрете. Тогда даже при временной смене адреса, пользователь не сможет зайти на портал.

Похожие статьи

e-webmaster.ru

Ограничение доступа при помощи файла .htaccess

Файл дополнительной конфигурации .htaccess так же часто используют для ограничения доступа к сайту, разделам сайта или конкретным файлам, находящимся на сервере.

Чтобы запретить доступ ко всему сайту, необходимо в файле .htacces написать следующее:

deny from all

Запретить доступ только с конкретного ip-адреса:

deny from all
order allow deny
deny from all
deny from ip_адрес_пользователя

«ip_адрес_пользователя» необходимо заменить на конкретный ip-адрес.

Чтобы разрешить доступ только с конкретного ip-адреса, можно написать:

order allow deny
deny from all
allow from ip_адрес_пользователя

Так же с помощью файла .htaccess можно запретить доступ к конкретному файлу. Например, запретим доступ пользователей к самому файлу .htaccess. При этом сервер сможет использовать инструкции, указанные в файле:


< Files .htaccess >
order allow,deny
deny from all

Защита файлов

Наверное, всем пользователям интернета попадались одинаковые статьи на различных сайтах. Очень часто бывает, что эти статьи попросту сворованы с других ресурсов. Поисковые системы стараются бороться с дублированными страницами, но выбор ими первоисточника не всегда оказывается верным. И это является серьезной проблемой для копирайтеров и веб-мастеров, так как на написание качественного контента, порой, уходит большое количество сил и времени, и очень неприятно обзавестись штрафными санкциями поисковиков за то, что кто-то скопировал контент с Вашего сайта. А зачастую, вместе с текстом воруют так же и изображения. Причем, многие воры, чтобы не перегружать свой сервер, не скачивают изображение с чужих сайтов, а просто ссылаются на файлы, находящиеся на сайте-первоисточнике. Вставка ссылки на файл, находящийся на другом сайте называется хотлинком (hotlink). Помимо ссылок на изображения этого могут быть так же ссылки и на другие файлы, например, доступные для скачивания. Такие хотлинки не только крайне неприятны для автора контента. Они так же перегружает сервер первоисточника.

Защитить файлы от хотлинка при помощи файла .htaccess можно добавив в него две строчки:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?ваш_сайт.ru.*$ [NC]
RewriteRule \.(jpe?g|bmp|gif|png|css|zip|pdf|txt|doc)$ — [NC,F,L]

В скобочках через символ «|» указаны расширения файлов, доступ к которым будет запрещен всем, за исключением сервера и пользователей сайта ваш_сайт.ru

Чтобы открыть доступ к файлам с этим расширением для пользователей поисковых систем необходимо исключить на них запрет так же, как на ваш_сайт.ru:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?ваш_сайт.ru [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yandex.ru [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yahoo. [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google. [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?bing. [NC]
RewriteRule \.(jpe?g|bmp|gif|png|css|zip|pdf|txt|doc)$ — [NC,F,L]


Защита паролем

При помощи файла дополнительной конфигурации .htacces возможно установить пароль на директорию сайта, конкретный файл или группу файлов с одинаковым расширением. Чтобы установить пароль на директорию, в .htaccess необходимо написать:

AuthName «What do you want?»
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd
require valid-user

Файл .htaccess, содержащий эти строки необходимо поместить в директорию, доступ к которой мы хотим закрыть. При попытке пользователя зайти на соответствующий раздел сайта сервер отдаст код статуса 401 (требуется авторизация) и выведет окно с полями для ввода имени пользователя и пароля и сообщением «What do you want?», указанным в директиве «AuthName» (допускаются только латинские символы и цифры).

Имена пользователей и пароли хранятся в файле .htpasswd. Путь к этому файлу задается в директиве «AuthUserFile».

Важно: путь к файлу .htpasswd указывается абсолютный, от корневого каталога сервера.

Чтобы узнать путь к .htpasswd, который необходимо указать в .htaccess, можно создать файл php, содержащий:


< ?php echo $_SERVER[‘DOCUMENT_ROOT’]; ? >

Закачать этот файл на сервер туда же, где находится .htpasswd, и открыть его в браузере. В сгенерированной странице Вы увидите абсолютный путь к директории, указанный от корневого каталога сервера.

Установить пароль на конкретный файл можно следующим образом:

< Files file.txt >
AuthName «It’s not for all»
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd

Пароль на группу файлов:


< Files «\.(sql)$» >
AuthName » It’s not for all «
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd

В данном случае все файлы, имеющие расширение .sql будут доступны только по паролю.

avg-it.ru

Запрет доступа к файлам определенных типов в htaccess

Вы здесь: Главная — Запрет доступа к файлам определенных типов в htaccess

Запрет доступа к файлам определенных типов в htaccess

При создании сайтов периодически возникает необходимость запретить прямой доступ к файлам определенных типов. Сделать это можно различными путями, обо одном из таких способов я как-то писал здесь. Но тогда использовался mod_rewrite, а здесь я буду использовать другой вариант.

Представим, что у нас есть набор файлов определенных типов, к которым мы хотим запретить доступ. Для этого нужно прописать в файле htaccess следующий код:

// Список расширений файлов
<FilesMatch ".(htaccess|htpasswd|docx|pdf|xls|xlsx|log)$">
   Order Allow,Deny
   Deny from all
</FilesMatch>

Таким образом, доступ к любым документам, файлам логов, файлам настройки веб-сервера прямым доступом по ссылке будет запрещен.

  • Запрет доступа к файлам определенных типов в htaccess Создано 28.05.2019 10:46:19
  • Запрет доступа к файлам определенных типов в htaccess
    Михаил Русаков
Предыдущая статья Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:
    <a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):
    [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

myrusakov.ru

Справка .htaccess

Внимание!
Надеюсь, вы догадаетесь сделать копию существующего файла .htaccess, а уж потом будете производить свои эксперименты.
Если вам не понравится результат своего творчества, просто верните старый на место. Пусть это будет вспомогательный файл, перегруженный может тормозить сервер. Генератор .htaccess

.htaccess

Файл .htaccess содержит пользовательские настройки web-сервера и анализируется при каждом запросе на сервер.
На виртуальном хостинге чаще всего используется для:
  • паролирования директорий,
  • переадресации страниц,
  • настройки собственных страниц ошибок,
  • определения кодировки,
  • запреты и разрешения,
  • и др.
Это гибкая настройка веб-сервера Апач.
С помощью него можно переопределить многие директивы из файла httpd.conf (главный конфигурационный файл сервера Апач).
Если файл .htaccess расположен в корневой директории сервера, то его действия распространяется на весь сервер, кроме тех папок, где находится другой файл .htaccess.

Редактор

Создать файлы .htaccess можно в Блокноте или встроенном редакторе Far, WindowsCommander, TotalCommander.
Я его редактирую с Notepad++ или Akelpad, которые использую для написания этого сайта.

Кодировка

Как выставить русскую кодировку. AddDefaultCharset utf-8
Определение кодировки на определенные типы файлов AddType «text/html; charset=koi8-r» .html .htm .shtm Определение кодировки на загружаемые файлы CharsetSourceEnc utf-8 Отключение перекодировки если при загрузке скриптом не загружаются (бьются) бинарные файлы (картинки, архивы), создайте файл .htaccess и поместите его папку, где вы хотите отключить функцию, в нем пропишите строчку: CharsetRecodeMultipartForms off <FilesMatch «\.(htm|html|css|js)$»>
AddDefaultCharset UTF-8
</FilesMatch> Назначение стартовой страницы. DirectoryIndex index.html Можно указывать несколько страниц. DirectoryIndex index.html index.php index.shtml map.html При запросе каталога они будут искаться в том порядке, в котором перечислены в директиве DirectoryIndex. Если не будет найден файл index.html, то будет произведен поиск файла index.php и т.д.

Разрешение/запрет

разрешить доступ с определенного ip. order allow deny
deny from all
allow from 000.000.000.000 запретить доступ с определенного ip.
order allow deny
allow from all
deny from 000.000.000.000 запретить просмотр всем. deny from all разрешить просмотр всем. allow from all Запретить доступ к определенному файлу. <Files config.php>
deny from all
</Files> Запретить доступ к файлам с определенным расширением. <Files «*.conf»>
deny from all
</Files> Запретить доступ к файлам нескольких расширений. <Files «\.(inc|conf|cfg)$»>
deny from all
</Files> ? — любой одиночный символ
* — любая последовательность символов, исключая символ / (слеш). Тонкая настройка доступа. Есть каталог a1 и в нем два вложенных каталога a2, a3, введено 2 уровня пользователей. 1 группа имеет доступ только к a1 и a2, 2-я ко всем трем каталогам. Необходимо проводить аутентификацию только 1 раз — при доступе к a1, но при этом соблюдать права на доступ к а2 и а3.
Ник и пароль запрашиваются только при входе на а1 — если у юзера есть доступ на а2 пароль уже не запрашивается. Если на а3 доступа нет, вылетит табличка «введите пароль». www.site.ru/a1
www.site.ru/a1/а2
www.site.ru/a1/a3
a1 — общий и вместе с тем закрытый. а2 и а3 только для отдельных личностей. файл .htaccess для каталога а1: AuthName «Input password»
AuthType Basic
AuthUserFile «/pub/home/login/htdocs/clousearea/.htpasswd»
<Files *.*>
require valid-user
</Files>

файл .htaccess для каталога а2:

AuthName «Input password»
AuthType Basic
AuthUserFile «/pub/home/login/htdocs/clousearea/.htpasswd»
<Files *.*>
require user юзер1 юзер2 юзер3
</Files *.*> файл .htaccess для каталога а3: AuthName «Input password»
AuthType Basic
AuthUserFile «/pub/home/абв/htdocs/clousearea/.htpasswd»
<Files *.*>
require user юзер1 юзер4 юзер5
</Files *.*>

Перенаправление (редирект)

Пути к файлам и директориям должны указываться от корня сервера, например, /pub/home/server1/html/
В именах доменов обязательно должны быть указаны протоколы (http://, http://, ftp://) Если вы не знаете путь от корня сервера, то Вы можете его узнать, спросив у администратора сервера, либо можете посмотреть сами, запустив на сайте функцию PHP — phpinfo(). Она выведет на экран конфигурацию PHP в виде фиолетовых таблиц. В них Вам необходимо найти переменную doc_root и посмотреть ее значение — это будет путь от корня сервера до вашей основной директории.
Перенаправление (редирект) только при запросе определенных страниц.
Redirect /location/from/root/file.ext http://www.serv.ru/new/file/location.xyz /location/from/root/file.ext — это путь до корневого файла (до нужного файла). www.serv.ru/new/file/location.xyz это место, куда попадет пользователь сделав запрос на файл file.txt. Если файл лежит в корневом каталоге, то вместо location/from/root/ можно сразу поставить: /oldfile.html ну и если файл в субкаталоге, то будет выглядеть так: /old/oldfile.html Редирект на папку (напр. папка oldfolder). Redirect /oldfolder http://www.serv.ru/newfolder запрос на www.oldserv.ru/oldfolder/images/smile.gif,
попадет на www.serv.ru/newfolder/images/smile.gif. Глобальное перенаправление (редирект) на другой адрес. Redirect / http://www.newsite.ru Перенаправление (редирект) только посетителей с определенным IP-адресом. SetEnvIf REMOTE_ADDR 192.145.121.1 REDIR=»redir»
RewriteCond %{REDIR} redir
RewriteRule ^/$ /only_for_you.html

Убираем WWW

Дело в том, что люди могут набирать адрес вашего сайта по-привычке с WWW. или экономя время без WWW.
Для Яндекса и Google http://your-site.com и http://www.your-site.com — разные сайты. И у вас, как следствие будет заниженный индекс цитирования. Это решается следующим кодом. Если вы хотите, чтобы ваш адрес был всегда с WWW. (привычнее), то код: RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^your-site.com$
RewriteRule ^(.*)$ http://www.your-site.com/$1 [R=301,L] Вместо your-site.com пишем свой адрес.

Пароль

Защита паролем. AuthName «Section Name» AuthType Basic AuthUserFile /full/path/to/.htpasswd Require valid-user Вам надо изменить для своего сайта. Например, поменять Section Name на своё название (к примеру — Members area). /full/path/to/.htpasswd — полный путь до файла .htapasswd (об этом чуть позже). Если вы не знаете полного пути, то обратитесь к системному администратору. Файл .htpasswd Чтобы защитить директорию паролем, надо создать файл содержащий логины и пароли, которым разрешено будет посещать сайт. И вписать в файл .htpasswd. Создание имен пользователей и паролей. Вписываем имена пользователей и пароли след. образом: username:password пароль (password) зашифрованная версия пароля.
Чтобы зашифровать .htpasswd файл, вам нужно будет воспользоваться готовым скриптом, или самому написать его. Если вам нужно несколько пользователей, то пишите построчно их. Как только вы заходите в защищенную паролем директорию, у вас всплывет pop-up окно для ввода логина и пароль. А можно просто вписать в поле адреса: username:[email protected]/directory

Ускоряем сайт с помощью gzip

Это сжатие уменьшает размер ваших файлов, и как следствие сокращает траффик у посетителя, ваш сайт быстрее открывается. Но это подойдет только для небольших и средний сайтов, потому что вы повышаете нагрузку на сервер. AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml
application/xhtml+xml text/JavaScript text/css application/x-JavaScript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html Как заставить Апач обрабатывать SSI директивы? SSI позволяют «собирать» страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем — нижней. А посетитель видеть обычную страницу, которая состоит из того кода, который входит в ваши кусочки. Необходимы обязательные установки в httpd.conf:
В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes.
и после, в файле .htaccess пишем: AddHandler server-parsed .shtml .shtm .html .htm Чтобы пользователь не видел список файлов в папке, при отсутствии в ней индексного файла, добавим строчку: Options -Indexes Выполнение php кода в файлах с другим расширением. Иногда бывает полезно «обмануть» посетителя, выдавая ему свои php-скрипты или иные файлы, как html файлы. Реально используется для индексации поисковой системой Rambler php-скриптов. RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml Заметьте, так как файлам с расширением .html и .htm сопоставлено, что это файлы с гипертекстовой разметкой, то мы первой строкой убираем это сопоставление и добавляем обработку таких файлов php интерпретатором. При большой посещаемости сервера такие ухищрения могут вызвать тормоза. Спрашивайте у админа. Error 404 … Если не будет файла, сообщающего об ошибке, то посетитель увидит содержимое вашего сайта, как в проводнике. Наверное, вы встречали картину подобную представленной ниже: web-studio Ph5
Можно создать специальный файл, где будут ссылки на ваш сайт, а не на хостера. Назвать его 404.html и поместить в корневую директорию.
Величина страницы с ошибкой должна быть больше 511 байтов, иначе Internet Explorer может показать собственную страницу с описанием ошибки. ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
ErrorDocument 401 /401.html
ErrorDocument 500 /500.html Можно указать другой файл, который автоматически откроется при появлении ошибки.
Карта сайта — является идеальным файлом для обработки ошибки error 404 (файл не найден). ErrorDocument 404 /map.html register_globals Если у вас не работает почтовая форма, возможно не включен register_globals, тогда добавьте строчку: php_flag register_globals on Или php_flag register_globals off если вы хотите отключить.

ПРИНУДИТЕЛЬНАЯ ЗАКАЧКА ОПРЕДЕЛЕННЫХ ФАЙЛОВ

Можно некоторые файлы (MP3, EPS, XLS …), предназначенные для скачивания принудительно скачивать, а не позволить браузеру решить, что делать. То есть, принять решение за него.
Этот фрагмент кода заставит загрузку и .xls файлы .eps с вашего сервера. <Files *.xls>
   ForceType application/octet-stream
   Header set Content-Disposition attachment
</Files>
<Files *.eps>
   ForceType application/octet-stream
   Header set Content-Disposition attachment
</Files>

ЗАЩИТА ОТ ХОТЛИНКОВ

Хотлинк (hotlink) — это когда ставят прямую ссылку на ваше содержание с другого сайта.
Часто такая ситуация нежелательна, вы же не хотите оплачивать трафик другого сайта, и для ее избежания используется: SetEnvIfNoCase Referer «^http://www.test.com» local_ref=1
SetEnvIfNoCase Referer «^http://test.com» local_ref=1
<FilesMatch «.(gif|jpg)>
Order Allow,Deny
Allow from env=local_ref
</FilesMatch> Другой вариант: RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]
RewriteRule .*\.(gif|jpg)$ — [F]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !.*/foo-with-gif\.html$
RewriteRule ^inlined-in-foo\.(gif|jpg)$ — [F] Еще вариант: RewriteEngine On
#Replace ?mysite\.com/ with your blog url
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your «don’t hotlink» image url
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

www.ph4.ru

Запретить доступ к файлам сайта htaccess

Как запретить доступ к файлам на сайте с помощью htaccess. htaccess — это отличный инструмент в умелых руках, не только для зарета доступа к файлам! Но раз мы рассматриваем закрытие файла от посторонних глаз с помощью htaccess, то так и будем делать!

Поскольку количество способов скрыть файл и вообще запретить много, то яне берусь рассказать о всех способах! И чтобы не запутаться в перипетиях запрещений доступа к фалам сделаме навигацию по странице!

Навигация по странице :
  1. Запретить доступ ко всем файлам -> deny from all
  2. Запретить доступ к файлам с определенным разрешением htaccess
  3. Как запретить доступ к одному файлу htaccess
  4. Как запретить доступ к одному файлу НЕ htaccess

    Как запретить доступ ко всем файлам -> deny from all

  1. Для того, чтобы запретить вообще ко всем файлам на сайте, нам понадобится файл .htaccess, в котором прописываем такую строчку:

    deny from all

    Пример запрета на доступ ко всем файлам htaccess

    Естественно, что все файлы мы не будем закрывать, мы сделаем папку в которую поместим файл .htaccess с выше приведенной строкой и поместим туда файл, test.php
    Нажмите по ссылке,чтобы посмотреть, результат… test.php

    Запретить доступ к файлам с определенным разрешением htaccess

  2. Для того чтобы закрыть доступ в папке к любому файлу с любым разрешения, например txt или файл конфиг cfg

    Делаем такую запись:

    <Files ~ «\.(dat|cfg)$»>  

    deny from all   

    </Files> 

    Пример — Как запретить доступ к файлам с определенным разрешением

    Одно дело, когда сухая теория без примеров, то очень часто не понятно, как это должно работать!

    Поэтому мы не поленились и сделали несколько примеров, для иллюстрации этих правил – запрета просмотра файлов!

    Возьмем для примера вот такой путь и положим в него файл users.dat

    Если вы прошли по ссылке. То увидели, что файл спокойно можно открыть и прочитать, что собственно там написано!

    Теперь создадим папку номер два с точно таким же файлом, но уже в эту папку положим файл htaccess – где и пропишем

    <Files ~ «\.(dat|cfg)$»>  

    deny from all   

    </Files> 

    Попробуйте перейти по ссылке..


    Как запретить доступ к одному файлу htaccess

  3. К примеру у вас есть один файл users.txt и к нему нужно запретить доступ.

    Делаем такую запись:

    Пример — Как запретить доступ к одному файлу htaccess.

    Для того, чтобы продемонстрировать работу выше приведенной записи в htaccess для запрета лишь определенного файла -> сделаме отдельную паку, в которую поместим файл htaccess с выше приведенным правилом!

    1. Первый файл, к котрому выше запретили доступ через htaccess users.dat:
    2. В эту же папку поместим файл с таким дже разрешением, но изменим название на users_1.dat, как видим, заперт на просмотр верхнего файла действует в этой паке, но никак не влияет на соседние файлы!

    Как запретить доступ к одному файлу НЕ htaccess

  4. Ну раз уж тема запрета на просмотр файлов, приведу еще один способ запретить просматривать страницы, только без htaccess. Сделали уже довольно много страниц посвященных админкам , и таv, в том числе есть много примеров, тестовых страниц, вот таких, на которую вы не сможете посмотреть, потому, что данная страница закрыта через php.
ЕЩЁ И еще мы уже делали тему похожую — запрет на просмотр папок

Пример:

https://dwweb.ru/__a-data/_primer/htaccess/otkryit_opredelennyiy_fayl/primer_4 Не забудь ! Теги:
доступ к файлу запрещендоступ запрещен просмотр файладоступ запрещен просмотр файла index php запрещенhtaccess запретить доступ к файламзапретить доступ к файлам сайтазапретить прямой доступ к файлу phpзапретить доступ к файлу через htaccessкак закрыть доступ к файлу на сайтеограничить доступ к файлам на сайте.htaccess запретить доступ к папкеhtaccess запретить доступ к urlзапрет на прямой переход к файлу

dwweb.ru

.htaccess примеры

Для чего служит .htaccess?

Набирая адрес в строке браузера, вы получаете на свой компьютер файлы, которые отображает браузер. Управление тем, какие файлы и как вам показывать (пересылать) осуществляет веб-сервер. Наиболее популярных серверов два: IIS и Apache.
Как и любая программа, веб-сервер имеет определенные настройки. Но, у вас, как пользователя Апача может (и скорее всего не будет, если говорить о виртуальном хостинге) прав менять конфигурацию Апача через его главные файлы, действие которых распространяется на всех пользователей этого сервера. Но, вы можете менять некоторые конфигурационные файлы, который распространяют свое действие только на ваш сайт. Один из таких файлов — .htaccess
Это файл гибкой настройки веб-сервера Апач. «Гибкий» обозначает, что как только вы поменяли что-то в этом файле, изменения тут же вступают в силу. С помощью него можно переопределить многие директивы из файла httpd.conf (этот файл является главным конфигурационным файлом сервера Апач и его действия распространяются полностью на всех пользователей данной копии Апача). В случаях, когда у вас нет доступа в файлу настройки Апача (тот же виртуальный хостинг), вам поможет именно этот файл.
Этот файл не доступен веб-пользователю из браузера. Если файл .htaccess расположен в корневой директории сервера, то его действия распространяется на весь сервер, кроме тех папок, где находится другой файл .htaccess (и кроме всех папок «ниже» этой папки со вторым .htaccess).
Пример:
Структура ваших директорий на сервере такая:

|-user
| |
|  -user1
|        |
|         -user2
|
|-data
| |
|  -data1
|      |
|       -data2
|

Директории user1 и user2 будут вложенными по отношению к директории user. Если мы поместим в директорию www файл .htaccess, то его действие будет автоматически распространяться и на директории user1 и user2.
В директорию data помещаем другой файл .htaccess, по-сравнению, с тем, что находится в директории user. И для директорий data1 и data2 будет действовать файл .htacсess, находящийся в data.
Теперь, в директорию user2 мы помещаем еще один файл .htaccess, который отличен от того, что находится в директории 2мя уровнями выше (это директория user). В итоге, настройки для директории user2 будут определяться только тем файлом .htaccess, который находится в этой директории.
Так как чаще всего Апач настроен так, что всегда ищет этот файл в директории, то .htaccess поможет вам быстро и без останова сервера произвести его перенастройку.


Синтаксис .htaccess

Вот обязательной синтаксис, несоблюдение которого приводит к ошибкам сервера:
— пути к файлам (директориям) указываются от корня сервера. Пример: /opt/home/www.astanafoto.com/htdocs/config/.htpasswords
— домены с указанием протокола
Пример: Redirect / http://www.site.ru

Файл имеет название именно «точка» htaccess
Должен быть записан в UNIX-формате. Для оболочки FAR, достигается F4 (редактирование файла), Shift+F2 (выбрать «сохранить как UNIX-текст»).


Как запретить веб-посетителям читать файлы в директории?

Запрет на все файлы:deny from all
Где all обозначает «все».


Разрешить доступ с определенного ip:order allow deny
deny from all
allow from <ваш ip>
В данном случае, <ваш ip> обозначает конкретный адрес.
Например:order allow deny
deny from all
allow from 192.126.12.199


Запретить доступ с определенного ip:order allow deny
deny from all
deny from <ваш ip>
Использование <ваш ip> аналогично для примера выше.

В зависимости от того в каком порядке указаны директивы меняется логика работы сервера. В случае если Deny,Allow то запрещается доступ со всех IP кроме оговоренных, в случае если Allow,Deny разрешается доступ со всех IP кроме оговоренных. Далее должны идти секции описания для доступа и запрета. Ключевое слово all означает со всех IP

Например мы хотим запретить (блокировать) доступ с IP 81.222.144.12 и 81.222.144.20 и разрешить всем остальным нам необходимо добавить в .htaccess следующий код:

Order Allow,Deny
Allow from all
Deny from 81.222.144.12, 81.222.144.20

Для обратной ситуации когда мы хотим запретить доступ со всех IP кроме 81.222.144.12 и 81.222.144.20 нам необходимо добавить в .htaccess следующий код:

Order Deny,Allow
Deny from all
Allow from 81.222.144.12, 81.222.144.20

Чтобы разрешить только в частности хостов или групп хостов для доступа к серверу, хост может быть указан в любом из следующих форматов:

  • для доменного имени (или его части):
    Allow from apache.org
    Allow from .net example.edu
  • для ip адреса:
    Allow from 10.1.2.3
    Allow from 192.168.1.104 192.168.1.205
  • для части ip адреса:
    Allow from 10.1
    Allow from 10 172.20 192.168.2
  • для пары сеть/маска:
    Allow from 10.1.0.0/255.255.0.0
  • для сети/nnn CIDR спецификации:
    Allow from 10.1.0.0/16 

Запрет на группу файлов по маске:<Files "\.(inc|sql|...другие расширения...)$">
order allow,deny
deny from all
</Files>
Определяет доступ к файлу по его расширению.
Например запрет на доступ к файлам с расширениям «inc» для веб-посетителей:
<Files «\.(inc)$»>
order allow,deny
deny from all
</Files>

В данном примере сам веб-сервер Апач может обращаться к файлам с таким расширениям.


Запрет на конкретный файл:
Можно поставить запрет на конкретный файл по его названию и расширению.<Files config.inc.php>
order allow,deny
deny from all
</Files>
В данном примере стоит запрет на обращения к файлу config.inc.php.


Пароль на директорию:AuthName "Private zone"
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
require valid-user
</Files>
Значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации. Значение AuthUserFile указывает на место, где хранится файл с паролями для доступа к данной директории. Этот файл создается специальной утилитой htpasswd.exe.

Например в директории, которую защищаем паролем создаем такой .htaccess:AuthName "For Registered Users Only"
AuthType Basic
AuthUserFile /pub/site.ru/.htpasswd
require valid-user
</Files>
В этом примере, посетитель при запросе директории, будет читать фразу «For Registered Users Only», файл с паролями для доступа должен лежать в директории /pub/site.ru/ и называться .htapasswd . Директория указывается от корня сервера, если вы неправильно зададите директорию, то Апач не сможет прочитать файл .htpasswd и никто не получит доступа к данной директории.


Пароль только на 1 файл:сайт источник http://yapro.ru Tue Feb 09 2010 15:44:59 GMT+0300
Аналогично паролированию директории полностью, можно ставить пароль только на 1 файл.
Пример установки пароля на файл private.zip:<Files private.zip>
AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
</Files>


Пароль на группу файлов:
Аналогично, используя <Files «\.(inc|sql|…другие расширения…)$»>, можно ставить пароли по маске файлов.
Пример установки пароля на доступ ко всем файла с расширением «sql»:
<Files «\.(sql)$»>
AuthName «Users zone»
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
</Files>


Проверка прав доступа

Задача: есть каталог a1 и в нем два вложенных каталога a2, a3, введено 2 уровня пользователей. 1 группа имеет доступ только к a1 и a2, 2-я ко всем трем каталогам. Необходимо проводить аутентификацию только 1 раз — при доступе к a1, но при этом соблюдать права на доступ к а2 и а3.
Ник и пароль запрашиваются только при входе на а1 — если у юзвера есть доступ на а2 пароль уже не запрашивается. Если на а3 доступа нет, вылетит табличка «введите пароль».
www.site.ru/a1
www.site.ru/a1/а2
www.site.ru/a1/a3
a1 — общий и вместе с тем закрытый. а2 и а3 только для отдельных личностей.


файл .htaccess для каталога а1:AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"
<Files *.*>
require valid-user
</Files>
файл .htaccess для каталога а2: AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"
<Files *.*>
require user юзвер1 юзвер2 юзвер3
</Files *.*>
файл .htaccess для каталога а3: AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/абв/htdocs/clousearea/.htpasswd"
<Files *.*>
require user юзвер1 юзвер4 юзвер5
</Files *.*>


Как сделать перенаправление (редирект) посетителя?

Редирект на другой url:
Что бы сделать перенаправления посетителя на сайт http://site.ru в .htaccess Redirect / http://www.site.ru


Показ разных страниц, в зависимости от IP адреса посетителя:SetEnvIf REMOTE_ADDR <нужный ip адрес> REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /another_page.html
Например, перенаправление посетителей с ip адресом 192.12.131.1 на страницу about_my_sity.html:SetEnvIf REMOTE_ADDR 192.12.131.1 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /about_my_sity.html


Перенаправление посетителя при запросе определенных страниц:
Это уже для всех сетевых вирусов и сканеров. Теперь любой запрос с адресом /_vti_bin будет автоматически перенаправляться на Microsoft: redirect /_vti_bin http://www.microsoft.com
redirect /scripts http://www.microsoft.com
redirect /MSADC http://www.microsoft.com
redirect /c http://www.microsoft.com
redirect /d http://www.microsoft.com
redirect /_mem_bin http://www.microsoft.com
redirect /msadc http://www.microsoft.com
RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1


Как сделать стартовой другую страницу?

Что бы поменять страницу, которая будет показываться при обращении к директории, пишем:DirectoryIndex <нужная страница>Можно указывать несколько страниц.DirectoryIndex index.shtml index.php index.php3 index.html index.htm


Как заставить Апач обрабатывать SSI директивы?

SSI позволяют «собирать» страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем — нижней. А посетитель видет обычную страницу, которая состоит из того кода, который входит в ваши кусочки.
Необходимы обязательные установки в httpd.conf:
В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes.

После, в файле .htaccess пишем:
AddHandler server-parsed .shtml .shtm .html .htm


Как заставить Апач выполнять в html документах php код?

Иногда бывает полезно «обмануть» посетителя, выдавая ему свои php-скрипты или иные файлы, как html файлы. Реально используется для индексации поисковой системой Rambler php-скриптов. Некоторые делаю мелкие фишки, вроде того, что дают фалам расширения совпадающие с какими-либо «знаковыми» именами. Например, на сайте www.osg.ru используются файлы с расширением osg: index.osg, script.osg и т.п.
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
При большой посещаемости сервера может вызвать тормоза. Спрашивайте у админа.


Как самому обрабатывать ошибки Апача?

Наиболее интересные и полезные ошибки Апача это: 403-404, 500.
403 — пользователь не прошел аутентификацию, запрет на доступ (Forbided).
404 — запрашиваемый документ (файл, директория) не найден.
500 — внутренняя ошибка сервера (к примеру, ошибка в синтаксисе файла .htaccess).
Для того, что бы пользователю при этих ошибках были показаны ваши собственные сообщения об ошибках, в .htaccess пишем:
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
При этом при возникновении 404 ошибки пользователю загрузится файл errors/403.html.


Удобно делать собственный обработчик на некоторые ошибки. В .htaccess пишем:ErrorDocument 403 /errors/error.php?403
ErrorDocument 404 /errors/error.php?404
ErrorDocument 500 /errors/error.php?500
В error.php через $HTTP_SERVER_VARS[‘REQUEST_URI’] определяем какой документ вызвал ошибку и дальше обрабатываем. Если в .htaccess на ErrorDocument стоит указание файла с полным путем (http://site.ru/error.php), то $HTTP_SERVER_VARS[‘REQUEST_URI’] будет содержать этот файл, а не вызвавший ошибку.
В Internet Explorer 5.0 неправильно обрабатывается файл, вызывающийся при ошибке, если его размер меньше 1 килобайта. Будет вызвана стандартная страница IE 404.

Как поставить запрет на отображение содержимого директории при отсутствии индексного файла?

Предположим, что у вас вся графика, используемая на сайте находится в директории img. Посетитель может набрать в адресной строке браузера эту директорию и увидеть список всех ваших графических файлов. Конечно, это не нанесет вам урона, но можно и не дать такого просмотра посетителю. В .htaccess пишем:

Options -Indexes


Можно ли указать кодировку на все файлы, в которой по умолчанию получает документы браузер?

На заре интернета и зарождения браузеров, часто была ситуация, что браузер не мог автоматически определить, в какой из русских кодировок написан документ и в браузер выдавалась какая-то каша. Для избежания этого указываем, что все отдаваемые страницы будут иметь кодировку windows-1251:
AddDefaultCharset windows-1251


Можно ли указать кодировку на загружаемые файлы?

При загрузке посетителем файла на сервер, возможна перекодировка его — указываем, что все получаемые файлы будут иметь кодировку windows-1251:
CharsetSourceEnc windows-1251


Создал файл .htaccess, но сервер выдает 500 ошибку — Internal Erorr

Ошибка синтаксиса или файл записан не в том формате.
Смотрите вопрос #2.

yapro.ru

Всё про файл .htaccess | .htaccess

Файл .htaccess позволяет администратору управлять почти всеми настройками сервера Apache, касательно всего сайта или только определённых директорий, потому как структура папок на сервере имеет древовидную структуру и если поместить файл .htaccess в одну из них, то можно получить управление именно этой директорией, не влияя на работу других. Если в директории «DIR» расположен такой файл .htaccess, а во вложенном каталоге по отношению к нему есть еще один .htaccess, то во вложенной директории действуют настройки последнего. Вот таким образом, новый .htaccess отменяет предыдущий.
Данный фал вы не увидите через протоков http, следоватьно пользователи не смогут увидеь всех настроек вашего сайта.

Сервер Apache действует таким образом: при начале обработки страницы, он сначала ищет именно файл .htaccess, находящийся в коре директорий. Если он найден, то Apache начинает обработку директории соответствующим образом, описанным в файле.

Если сервер при обходе директорий, находит синтаксические ошибки в файле .htaccess, то он прекращает обработка. Вот некоторые из них, а точнее: самые популярные ошибки при работе с этим файлом:

1. Путь к файлу должен быть полным. ( /paht/to/Your/site/.htpassword )
2. Для переадресаций указываем протокол: http или ftp (Redirect / http://www.somesite.ru/)
3. По умолчанию файл называется .htaccess.
4. Файл сохраняется в Unix формате. То есть символ новой строки — n.

Теперь стоит поговорить о некоторых самых популярных параметрах настойки:

Запреты и разрешения

Запрет на все файлы в каталоге:

Доступ только с определенного IP:

order allow deny
    deny from all
    allow from $ip

    $ip - IP адрес.

Запретить доступ для определенного ip:

order allow deny
    deny from all
    deny from $ip

Запрет доступа на группу файлов по расширению (по маске):

<Files ".(tar|gif|png|...|xml)$">
    order allow,deny
    deny from all
    </Files>

Разрешение или запрет на чтение по расширению.
Запрет на доступ к файлам *.inc:

<Files ".(inc)$">
    order allow,deny
    deny from all
    </Files>

Стоит отметить, что запреты файла .htaccess будут действовать только при обращении к нужному документу через браузер пользователя.

Запрет доступа на конкретный файл:

<Files conf.inc.php>
    order allow,deny
    deny from all
    </Files>

Запрет на чтение conf.inc.php посетителями сайта не запрещает локальным приложениям сервера читать этот файл.

Установка паролей

Паролирование директории:

AuthName "Reg only"
    AuthType Basic
    AuthUserFile /pub/home/site/.htpasswd
    require valid-user

Такое значение AuthName для посетителей будет выводиться во всплывающем окне. Значение AuthUserFile указывает серверу, где хранится файл с паролями для доступа. такой файл можно создать специальной утилитой htpasswd в операционной системе linux или htpasswd.exe в ОС Windows.

Пароль только на 1 файл:

Пример установки пароля на файл file.rar:

<Files file.rar>
    AuthName "Users zone"
    AuthType Basic
    AuthUserFile /pub/home/login/.htpasswd
    require valid-user
    </Files>

Пароль на группу файлов по расширению:

<Files ".(gif|png|...|rar)$"> А дальше как пароль на файл

Перенаправления (редиректы)

Redirect посетителей на другой сайт:
    Redirect / http://www.site.ru

Перенаправление при запросе определенных каталогов и страниц:

redirect /_vti_bin http://alterwebs.net/
    redirect /cpp http://alterwebs.net
    redirect /dpp http://alterwebs.net/read/general/list/
    RedirectMatch (.*)cmd.exe$ http://www.microsoft.com$1

Переопределение стартовой страницы

DirectoryIndex index.html

Или

DirectoryIndex index.shtm index.php3 index.php index.htm index.html

Обработка ошибок сервера

код 401 — Требуется авторизация (Authorization Required)
код 403 — Нет доступа (Forbidden)
код 404 — Не найден файл (File not found)
код 500 — Внутренняя ошибка сервера (Internal Server Error)

ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html

Выставить полный запрет на просмотр оглавления необходимой директории. То есть, если в каталоге dir/ нет файла Index.*, что бы он загружался автоматически, то при обращении пользователя к dir/, ему будет отказано в доступе и Apache выдаст ошибку 403.

Кодировка

Иногда необходимо установить кодировку по умолчанию, то есть default-кодировка. В какой кодировке сервер будет отдавать документы.

AddDefaultCharset windows-1251

А так же установка необходимой кодировки на файлы на сервере:

CharsetSourceEnc windows-1251

www.internet-technologies.ru