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

Файл htaccess - настройка и примеры использования - 3.7 out of 5 based on 20 votes

Файл htaccess позволяет производить конфигурирование и переопределение настроек веб-сервера Apache и подобных ему серверов. С его помощью можно установить разрешения и параметры для работы сервера у определенных пользователей хостинга и даже на отдельных папках определенного пользователя.

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

Что собой представляет файл htaccess и для чего используется

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

Файл htaccess был придуман специально для того, чтобы можно было предоставить возможность менять конфигурацию сервера каждому пользователю, затрагивая только свой собственный сайт, а не весь сервер целиком. Всем известно, что основные директивы конфигурации Apache находятся в файле httpd.conf. Однако у большинства пользователей, а если говорить о виртуальном хостинге, то у всех пользователей, нет возможности получить доступ к нему и прав на модификацию, так как это действие будет распространяться на всех.

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

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

Некоторые особенности использования htaccess:

1. В нем можно переопределить большое количество директив, прописанных в главном файле httpd.confg

2. Если расположить htaccess-файл в корневой каталог, он распространится на весь сайт (исключения составят только те каталоги, в которых расположен собственный конфигурационный файл, и каталоги, расположенные ниже в древовидной структуре)

3. Разместить htaccess-файл можно в любой каталог, а его директивы будут применены ко всем подкаталогам

4. Htaccess не доступен пользователю для просмотра из браузера, так как относится к категории «системные».

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

  • Директивы простого перенаправления (редирект);
  • Директивы сложного перенаправления (mod_rewrite);
  • Индексные страницы;
  • Обработка ошибок;
  • Определение кодировки;
  • Управление доступом к директориям и файлам;
  • Паролирование директорий;
  • Опции PHP.

Примеры наиболее частого использования файла htaccess

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

Прежде чем мы приступим обратите внимание на следующие моменты:

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

3. Синтаксис.htaccess

Пути к файлам (директориям) указываются от корня сервера.

DirectoryIndex /home/st5155/www/data/home.html

В случае настройки файла htaccess лежащего в корневой папке сайта, пути указываются от корня этой папки.

DirectoryIndex /home.html

Домены записываются с указанием протокола http:// или https://

Redirect / http://vash-sait.ru

Файл имеет название именно "точка" htaccess.

Для создания закомментированной строчки используйте знак #.

Редактировать файл удобнее всего при помощи редактора AkelPad, входящего в состав Total Commander, достаточно его выделить и нажать F4.

Простое перенаправление - директива Redirect

1. Осуществление перенаправления на новые страницы сайта

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

Redirect 301 /staraya.html http://vash-sait.ru/novaya.html

2. Приведение фидов к общему формату

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

RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://vash-sait.ru/feed/

Сложное перенаправление - директива RewriteRule

1. Перенаправление домена с www на без www.

Очень часто приходится использовать 301 редирект в htaccess для склеивания доменов с www и без www. Раньше поисковые системы считали такие адреса совершенно различными и смотрели на них как на разные сайты. Сегодня задача по склейке возлагается на поискового робота, но никогда не лишним будет указать корректное зеркало. К тому же, у самих не будет никакой путаницы.

Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.vash-sait\.ru$ RewriteRule ^(.*)$ http://vash-sait.ru/$1

2. Перенаправление посетителей на разные старницы в зависимости от IP-адреса посетителя.

В htaccess имеется возможность указать на какую страницу, будет перенаправлен пользователь с конкретным IP-адресом. Например, перенаправление посетителей с ip адресом 183.11.101.1 на страницу kontakt.html

SetEnvIf REMOTE_ADDR 183.11.101.1 REDIR="redir" RewriteCond %{REDIR} redir RewriteRule ^/$ /kontakt.html

3. Перенаправление в случае обновления веб-ресурса

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

RewriteEngine on RewriteCond %{REQUEST_URI} !/info.html$ RewriteCond %{REMOTE_HOST} !^14\.124\.354\.80 RewriteRule $ http://vash-sait.ru/info.html

Где 14.124.354.80 - заменить на свой IP адресс.

4. Защита от хотлинков

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

RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://([ -a-z0-9] \.)?vash-sait\.ru RewriteRule \.(gif|jpe?g|png)$ -

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

RewriteRule \.(jpg|png|gif)$ http://vash-sait.ru/images/imageinfo.jpg

5. Перенаправление на безопасное https-соединение

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

RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

6. Автоматическая подстановка слеша в конце адреса.

Очень распространены ситуации, когда URL-адрес, заканчивается именем каталога: http://vash-sait.ru/images/raznoe

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

RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/

7. Блокировка пользователей пришедших с определенного сайта

Если владелец сайта не хочет, чтобы его ресурс посещали пользователи, зашедшие с определенного домена и требуется им закрыть доступ - htaccess также готов помочь. Вы можете перекрыть трафик с определенных сайтов используя страницу 403 или «запрет доступа». Полезна данная настройка тогда, когда на ваш сайт появились ссылки с сайтов с запрещенным контентом и по ним идет трафик на ваш сайт.

RewriteEngine on RewriteCond %{HTTP_REFERER} zapretnui-sait.com RewriteCond %{HTTP_REFERER} zapretnui-sait.com RewriteRule .* - [F]

Индексные страницы - директива DirectoryIndex

1. Изменение индексной старницы загружаемой по умолчанию

Обычно по умолчанию индексными страницами является index.htm, index.php или index.html, при обращении к директории сайта сразу происходит поиск данных файлов. Но при необходимости можно переопределить индексную страницу на любую другую. Подобная задача также решается с использованием htaccess-файла.

DirectoryIndex mypage.html

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

DirectoryIndex index.shtml index3.php index.html index.htm

Обработка ошибок - директива ErrorDocument

1. Пользовательская страница ошибок

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

ErrorDocument 404 "/404.html"

2. Создание своих страниц с описанием ошибок

Для тех, кто устал от привычных страниц, выводящих описание ошибок, произошедших на сайте, предоставляется возможность воспользоваться своими собственными заготовками. Нужно лишь самому сверстать несколько файлов с разрешением *.html, с необходимым содержимым и внести запись в htaccess-файл.

ErrorDocument 401 /errors401.html ErrorDocument 403 /errors403.html ErrorDocument 404 /errors404.html ErrorDocument 500 /errors505.html

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

  • 401 - Требуется авторизация (Authorization Required)
  • 403 - пользователь не прошел аутентификацию, запрет на доступ (Forbided)
  • 404 - запрашиваемый документ (файл, директория) не найден (Not Found)
  • 500 - внутренняя ошибка сервера - ошибка скрипта или ошибка в синтаксисе файла.htaccess - (Internal Server Error)

Определение кодировки

1. Определение кодировки, в которой сервер "отдает" файлы

Чтобы у пользователя на дисплее монитора не выводились непонятные для него символы, из которых не представляется возможности прочесть слова, необходимо указать корректную кодировку. Даже при отсутствии тега < Мета http-equiv = "Content-Type"> текст на странице будет всегда корректным и поможет в этом снова htaccess-файл.

AddDefaultCharset UTF-8

2. Определение кодировки на загружаемые файлы

Подобная ситуация может возникнуть в том случае, когда пользователь загружает на сервер файл и его содержимое может быть перекодировано. Чтобы использовалась требуемая кодировка htaccess должен содержать код, указывающий что все загружаемые файлы должны будут открываться с кодировкой UTF-8.

CharsetSourceEnc UTF-8

Управление доступом к директориям и файлам

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

Самый простой способ запретить просматривать файл – установить пароль, но не всегда этого достаточно. В некоторых случаях у пользователя не должно быть прав на просмотр любых файлов или каталогов (например нужно заблокировать системные каталоги, изменения в которых могут усугубить работу сервера). В htaccess-файле прописывается отрывок кода, лишающий всех привилегий пользователей.

2. Разрешить доступ с определенного IP

Поскольку файлы.htaccess являются служебными, то они не доступны веб-пользователю из браузера. Хотя конечно же, абсолютно всё, в том числе и это ограничение, можно переназначить в httpd.conf - главном конфигурационном файле сервера доступному только администратору хостинга.

Файл apache .htaccess перечитывается при каждом обращении к веб-серверу, так что изменения, внесенные в этот файл, вступают в силу немедленно.

Главная проблема при использовании директив.htaccess – это прежде всего ограничения хостеров, особенно на бесплатных серверах, и на начальных тарифах при платном хостинге, хотя как правило, многие не ресурсоемкие и безопасные директивы здесь уже разрешаются.

Поэтому сохраните оригинальный файл.htaccess на всякий пожарный:))

Обычно файл.htaccess лежит в корневом каталоге и действует на весь сайт и на все дирректрии (если в них не находится «своего» .htaccess). Если необходимо создать конкретные настройки Apache для определенной папки, следует поместить в нее новый файл.htaccess и действие его распространится на данную папку. Причем.htaccess лежащий в корне сайта никак влиять на эту папку в этом случае не будет.

Как сделать.htaccess
Просто. На локальном компе создаем текстовый документ.htaccess.txt, по FTP заливаем его на хост, и переименовываем в.htaccess

Основные возможности htaccess.

В начале рассмотрим директиву Order файла.htaccess Apache сервера
Описание: Устатавливает порядок работы директив Deny и Allow
Order - в переводе порядок. Порядок может принимать значения или .
Синтаксис - состояние по умолчанию:

Order Deny,Allow

Директива Deny - в переводе запрет
Описание: Запрещает доступ определенных клиентов к ресурсам.
Синтаксис:

Deny from all|host

host

Директива Allow - в переводе разрешить
Описание: Разрешает доступ определенных клиентов к ресурсам.
Синтаксис:

Allow from all|host

host может принимать значения IP адреса или имени хоста.

.htaccess запрет на доступ для всех

Order Deny,Allow
Deny from all

.htaccess - разрешение на доступ для определенного IP адреса и хоста.

Order Deny,Allow
# запрет для всех на доступ к ресурсу

Deny from all
# разрешаем только следующим
Allow from local.

.htaccess - запрет на доступ для пределенного IP адреса и хоста.

Order Allow,Deny
#разрешаем заходить на сервер всем

Allow from all
Deny from local.

Если нужно запретить всей сети 100.99.99.1 - 100.99.99.255 то ставим комбинацию первых лем: 100.99.99

Запрет на доступ для определенного файла.

Директива Files файла.htaccess сервера Apache
В примере запрещается доступ к файлу с паролями.htpasswd для всех посетителей кроме 100.99.99.1 и 2

Order Deny,Allow
Deny from all
Allow from 100.99.99.1, 100.99.99.2

Запрет передачи данных браузера методом GET .

В данном примере мы запретим пользователям с айпи-адресами (IP) 100.99.99.1, 100.99.99.2 заходить на ресурс используя метод GET для передачи данных браузером - .htaccess ip:

Order Allow,Deny
Deny from 100.99.99.1, 100.99.99.2
Allow from All

Мы запретили пользователю с IP адресом 100.99.99.1 смотреть сайт. Если вместо 100.99.99.1 написать 100.99.99, то доступ будет запрещен для всей сети класса C.

Запрет на доступ к определенной группе файлов.

Еще один пример.htaccess: запрет на доступ для определенной группы файлов. В примере запрещается доступ к файлам с расширениями "lib" и "pm" для всех посетителей кроме 100.99.99.1

# или например:

Order Deny,Allow
Deny from all
Deny from 100.99.99.1

Как с помощью.htpasswd и.htaccess запретить доступ к папке сайта.

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

AuthType Basic
AuthName "Please input login and password!"
AuthUserFile / usr/ host/ mysite/. htpasswd
require valid- user

  • AuthType - может иметь значение Basic или Digest, в нашем случае нам подойдет Basic.
  • AuthName - текст выводимый вместе с формой авторизации.
  • AuthUserFile - путь к файлу с паролями (.htpasswd).
  • AuthGroupFile - путь к файлу групп, если он существует.
  • Require - определяет параметры аутентификации. (User,Group,Valid-user) Valid-user – все прошедшие проверку. User – пользователи имеющие права доступа. Group – группы пользователей имеющие права доступа.

Создайте файл.htpasswd и в него поместите следующую строку:

admin: $apr1 $ejtOHg / 4 $cMColJLMZ39weAalo3V8k0

Строка эта содержит пару логин и пароль где:

Логин: admin
Пароль: 1

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

Пользоваться утилитой для генерации паролей очень легко, нужно создать файл.htpasswd и в программе выбрать его с помощью кнопки “Old file “. Далее все интуитивно понятно, вводим новых пользователей и пароли к ним, затем жмем на “Update “. Кстати данная утилита генерации паролей для htpasswd, может не только создавать новые, но и редактировать старые пароли. Что очень удобно, в случае если вы забыли старый пароль. Еще стоит сказать что эта утилита является стандартной и поставляется вместе с сервером Apache.

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

Внимание важное замечание! Очень полезным будет расположить файл с паролями вне папки с содержимым сайта. Это позволит защитить его от злоумышленников.

Перенаправление посетителей при обновлении сайта.

order deny,allow deny from all allow from 123.123.123.123 ErrorDocument 403 /page.html allow from all

Замените 123.123.123.123 на Ваш ip-адрес, а также замените page.html на ту страницу, которую будут видеть пользователи, зашедшие на сайт

Определенная страница с ошибкой 404

Когда пользователи обращаются к странице на Вашем сайте, которой не существует, то им показывается ошибка 404. Если вы хотите сделать ее определенной страницей, то в файле htaccess следует прописать следующий код:

Перенаправлять посетителей в таком случае удобно на главную страницу сайта.

Редирект на перемещенные или переименованные страницы.

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

Redirect 301 /old.html http://yoursite.com/new.html

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

Запрет на просмотр директории.

Если у Вас в папке на сайте нет файла index , то любой пользователь может посмотреть, какие файлы в ней лежат.

Чтобы избежать таких вещей, следует прописать такой код:

На некоторых хостингах такая функция прописана по-умолчанию, в таком случае Вам не стоит беспокоиться.

Создание красивых URL

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

Вот некоторые примеры с кодом:

RewriteEngine on RewriteRule ^about/$ /pages/about.html [L] RewriteRule ^features/$ /features.php [L] RewriteRule ^buy/$ /buy.html [L] RewriteRule ^contact/$ /pages/contact.htm [L]

Переопределение сообщений об ошибках

Одной из полезных возможностей, предоставляемых Apache, является подмена стандартных сообщений об ошибках веб-сервера своими. Для этого служит директива ErrorDocument.

ErrorDocument 403 "

Forbidden


ErrorDocument 404 /errors/404.html

Внимание: при указании непосредственно HTML кода в данной директиве кавычки ставятся только в начале строки (см. пример)!
Пути к файлам указываются относительно корневого каталога данного веб-хоста, а не относительно файловой системы (правильно: /errors/404.html; неправильно: /var/www/myhost/html/errors/404.html).

Включение поддержки SSI

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

AddType text/html .shtml .htm .html
AddHandler server-parsed .shtml
Options +Includes

Блокировка по реферреру

Посредством использования модуля mod_rewrite и файла.htaccess можно добиться запрета доступа к Вашим ресурсам, если клиент пришел с какого-то определенного сайта (блокировка по referer"у).

Для этого требуются следующие директивы.htaccess:

RewriteEngine on

RewriteCond %{HTTP_REFERER} badsite.com
RewriteRule .* – [F]

Или, если нужно перечислить больше одного сайта,

RewriteEngine on
# Options +FollowSymlinks # – раскомментировать, если при установке этого.htaccess появляется ошибка 500, Internal Server Error
RewriteCond %{HTTP_REFERER} badsite.com
RewriteCond %{HTTP_REFERER} anotherbadsite.com
RewriteRule .* – [F]

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

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.ru(/)?
RewriteCond %{HTTP_REFERER} !^http://(.*).mydomain.ru(/)?
RewriteRule .*.(gif|jpg|jpeg|png)$ – [F]
Изменение индекс-страницы

Задать/Изменить индексный файл и последовательность их обработки можно директивой DirectoryIndex
Например:

DirectoryIndex photo.php photo.php5 index.php

Перенаправления

Для организации редиректа средствами.htaccess достаточно строки вида:
Redirect /old_directory/old_file.html http://your_new_site.com/new_directory/new_file.html

Если нужно редиректить все содержимое подкаталога:
Redirect /old_directory http://your_new_site.com/new_directory/

Редирект для всего сайта:
RewriteEngine On
RewriteRule (.*) http://your_new_site.ru

Запрет обращений к.htaccess

Защитить их можно следующим образом, однако, это по умолчанию уже есть в httpd(2).conf, то есть в самой конфигурациии веб-сервера.


Order allow,deny
Deny from all

Добавление MIME-типов

Для добавления MIME-типов используется директива
AddType mime/type extension
Например,
AddType application/x-bittorrent torrent

Используется она в тех случаях, когда конфигурация по умолчанию заставляет сервер передавать документы не так, как требуется; например, многие серверы по умолчанию подразумевают тип text/plain, и бинарный файл (например, rar-архив), скачанный с такого сервера, вполне может оказаться «битым».

Запрет прямых ссылок на ресурсы

Если Вы хотите избежать так называемого «хотлинкинга» – прямых ссылок на Ваши ресурсы с других сайтов – Вам опять-таки поможет.htaccess в комбинации с mod_rewrite.
Для начала рассмотрим, чем плох хотлинкинг. Например, некий сайт размещает у себя изображение, находящееся на Вашем сайте, просто указав его в тэге . При этом все обращения к такой странице вызовут скачивание данного изображения с Вашего сайта; таким образом, будет расходоваться Ваш траффик и пропускная способность канала сервера, а посетители чужого веб-сайта увидят изображение, хранящееся у Вас, без соответствующего контекста.

Как же бороться с подобной практикой?
Рассмотрим следующий пример части файла.htaccess:
RewriteEngine on


RewriteRule \.(js|css)$ - [F]

Данный код запрещает обращения к.js и.css файлам (скрипты javascript и описания Cascading Style Sheets), если они производятся не с Вашего сайта.

Другой пример:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$
RewriteRule \.(png|gif|jpg|jpeg)$ http://www.mydomain.com/youaretheworst.gif

При обращении извне к изображениям, хранящимся на вашем сайте, вместо самих изображений будет отображаться содержимое файла youaretheworst.gif.

Запрет вывода списка файлов

Apache (при включении соответствующих опций) умеет отображать список файлов в каталоге, если в нем нет ни одного из перечисленных в DirectoryIndex файлов. Часто эта опция включена по умолчанию, что может быть неприемлемо.
Строчка
Options -Indexes
отключит этот режим.

Однако иногда может, наоборот, понадобиться разрешить просматривать список файлов, при этом исключив из него их часть. Для этого служит IndexIgnore.
Например,
IndexIgnore *.php* *.pl *.html *.shtml
разрешает вывод списка всех файлов, кроме PHP и Perl скриптов, а также HTML документов.

и еще...

Меняем страницу, которая будет показываться при обращении к директории.

Пропишем в файле.htaccess:

Код
DirectoryIndex index.shtml

** При обращение к директории, в которой лежит.htaccess, будет грузиться файл index.shtml

Запрет доступа с помощью.htaccess

При желании можем дать запрет на все файлы:

Код
deny from all

*** никто ничего не увидит.

Разрешить доступ посетителю только с определенного ip:

Код
Order Allow,Deny
deny from all
allow from 192.168.8.1

*** Всем кроме посетителя с IP 192.168.8.1 доступ запрещен.

Кстати, вместо ip адреса в.htaccess можно использовать имя домена. Например. Запретим доступ для всех посетителей, кроме пришедших с www.talkonline.ru:

Код
Order Deny,Allow
Deny from all
Allow from .talkonline.ru

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

Код
Order Allow,Deny
Allow from all
deny from 192.168.8.1

*** Для посетителя с IP 192.168.8.1 доступ на сайт запрещен.
**** Только не спрашивайте у меня где всять список китайских ip

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

Код
Order Allow,Deny
Allow from all
deny from .thehun.net
deny from 192.168.8.1

*** Для посетителя с IP 192.168.8.1 и всех, кто пришел с thehun.net доступ на сайт запрещен.

Определенная кодировка на все загружаемые на хост файлы:

Код
CharsetSourceEnc windows-iso-8859-1

*** все файлы будут иметь кодировку windows-iso-8859-1

Можно выставить определенную кодировку лишь на конкретные загружаемые на хост файлы:

Код
AddType "application/x-httpd-php3; charset=windows-iso-8859-1" .html
AddType "application/x-httpd-php3; charset=windows-1251" .htm

*** Устанавливаем кодировку windows-iso-8859-1 на файлы.html и windows-1251 на файлы.htm

Кодировка на все файлы, в которой по умолчанию будет получать их браузер посетителя:

Код
AddDefaultCharset windows-iso-8859-1

*** Все страницы, которые отдает сервер клиенту, будут иметь кодировку windows-iso-8859-1

Перенаправляем посетителей на другой URL (редирект)
В.htaccess пишем:

Код
Redirect / http://talkonline.ru

*** все посетители будут перенаправлены на www.talkonline.ru

Перенаправление посетителей при запросе определенных страниц:
Защищаемся от всяческих сетевых вирусов и сканеров.
Добавляем в.htaccess:

Код
redirect /scripts http://www.microsoft.com
redirect /_vti_bin http://www.microsoft.com
redirect /MSADC 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

*** Любой запрос с адресом /_vti_bin или /scripts будет автоматически перенаправляться на сайт Microsoft

Редирект посетителей в зависимости от реффера (ссылающейся страницы):

Код
RewriteCond %{HTTP_REFERER} http://www.yandex.ru
RewriteRule ^/yandex.html$ /google.html [L]

*** В данном случае все с yandex.ru вместо файла yandex.html получат файлик google.html

Как сделать 301 редирект для joomla:

1. На сервере находим файл.htaccess, обычно он лежит в корневом каталоге.

2. Делаем резервную копию.htaccess !!!

3. Находим следующие строки:

########## Begin - Joomla! core SEF Section
#
Информация
#
######### End - Joomla! core SEF Section

4. Между ними будет информация, а в последней строке в квадратных скобках будет атрибут "L", удаляем его.

5. Если Вы хотите чтобы название вашего сайта в адресной строке писалось с www, после "информации"добавляем следующее

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^site.com
RewriteRule ^(.*) http://www.site.com/$1

Если Вы хотите чтобы название вашего сайта в адресной строке писалось без www, после "информации"добавляем это

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.site.com
RewriteRule ^(.*) http://site.com/$1

6. Проверяем, также проверьте открываются ли внутренние страницы, если всё гуд то см. пункт 7, если нет, то загружаем резервную копию файла.htaccess и возвращаемся к пункту 2.

7. Пишем комментарий, а если поставите на своём сайте ссылочку на эту статью, моё сердце наполнится радостью и милость Богов Яндекса и Гугла снизойдёт на Ваш ресурс

По материалам сайта http://www.htaccess.net.ru, http://www.maxua.com.ua/, www.rabotafree.com

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

Если же вам нужны базовые сведения о предназначении данного файла, то вы можете получить из нашей статьи введение в.htaccess (перевод данной статьи не делал, так как там основы, их достаточно в русскоязычном сегменте Сети, но если будет проявлен интерес, то можно и ее перевести для полноты картины - прим. переводчика ), в которой достаточно подробно раскрыты все аспекты его применения.

Итак, полезные примеры использования. htaccess:

1. Управление доступом к файлам и каталогам
Защита паролем - это одно, но иногда может понадобиться полностью блокировать доступ пользователей к определенному файлу или папке. Обычно это относится к системным папкам, таким, например, как includes, доступ к которым должны иметь приложения, но не пользователи.

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

Deny from all
Однако учитывайте, что доступ будет блокирован для всех пользователей, включая и вас. Открыть доступ для конкретного пользователя можно прописав его IP-адрес. Вот код, который для этого потребуется:

Order deny,allow deny from all allow from xxx.xxx.xxx.xxx
где xxx. xxx. xxx. xxx - это ваш IP. Для задания разрешенных диапазонов IP-адресов вы можете заменить три последние цифры. Например, написав вместо них «0/12», вы зададите диапазон IP-адресов одной сети, что избавит вас от необходимости вводить в список все разрешенные IP-адреса отдельно.

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

order allow,deny deny from all
Если вы хотите указать определенные IP-адреса которым надо запретить доступ, перечислите их при помощи allow from.

Если же вы хотите заблокировать доступ к файлам определенного типа, используйте этот код:

Order Allow,Deny Deny from all

2. Запрет на просмотр директорий
Для предотвращения просмотра директорий сайта добавьте в.htaccess следующий код:

Options All -Indexes
Если же по какой-то причине вы хотите разрешить просмотр всех директорий, используйте код:

Options All +Indexes

3. Ускорение времени загрузки за счет сжатия файлов
Сжимать можно файлы любого типа. Например, для сжатия HTML-файлов добавьте код:

AddOutputFilterByType DEFLATE text/html
Для сжатия текстовых файлов используйте:

AddOutputFilterByType DEFLATE text/plain
Вы также можете сжать JavaScript или включить сжатие для других различных типов файлов командами:

AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml
Кроме того, вы можете сжать все ваши JavaScript, HTML и CSS файлы при помощи GZIP. Для этого используйте следующий код:

mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text\.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image\.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

4. Защита сайта от вставки изображений с других ресурсов
Если вы хотите запретить добавление ссылок на изображения со сторонних ресурсов, добавьте в файл.htaccess код:

RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ -
Не забудьте заменить yourdomain.com на имя вашего домена.

5. Блокировка посетителей, перешедших с определенного домена
Если вы не хотите видеть на своем сайте пользователей с конкретного домена, то вы можете запретить им доступ. Например, пользователей с нежелательных ресурсов (сайты для взрослых, хакерские сайты и т. д.) вы можете перенаправлять на страницу 403 Forbidden. Для этого необходимо включить mod_rewrite, хотя, как правило, он включен по умолчанию. Добавьте в.htaccess код:

RewriteEngine on RewriteCond %{HTTP_REFERER} bannedurl1.com RewriteCond %{HTTP_REFERER} bannedurl2.com RewriteRule .* - [F]
Вам необходимо заменить bannedurl1.com и bannedurl2.com доменами, которые вы хотите внести в черный список. Вы можете использовать флаг , указывающий, что введенное доменное имя нечувствительно к регистру. Флаг [F] указывает на тип действия, в данном случае - отображение ошибки 403 Forbidden. Если вы хотите запретить несколько сайтов, используйте флаги для каждого домена, если же вы хотите запретить использование одного домена - используйте только флаг .

6. Блокирование запросов от определенных браузеров
Если в ваших файлах журналов появились записи о посещении особых браузеров (это могут быть имитирующие работу браузера боты или пауки), вы можете запретить им доступ на свой сайт, добавив несколько строк в. htaccess:

RewriteEngine On RewriteBase / SetEnvIfNoCase Referer "^$" bad_user SetEnvIfNoCase User-Agent "^badbot1" bad_user SetEnvIfNoCase User-Agent "^badbot2" bad_user SetEnvIfNoCase User-Agent "^badbot3" bad_user Deny from env=bad_user
Замените badbot1, badbot1 и т. д. именами ботов из вашего журнала. Это закроет посторонним программам доступ к вашему сайту.

7. Кэширование файлов
Кэширование файлов - еще один способ ускорить загрузку вашего сайта. Вот то, что вам нужно прописать в.htaccess:

Header set Cache-Control "max-age=2592000"
Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленныq в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной max-age.

8. Отключение кэширования для разных типов файлов
Если вы не хотите кэшировать определенные типы файлов, можно не включать их в список. Однако иногда файлы могут сохраняться в кэше даже не будучи явно перечисленными в списке, в этом случае вы можете отключить кэширование для них индивидуально. Чаще всего отключать кэширование требуется для динамических файлов, таких как сценарии. Пример требуемого для этого кода:
Header unset Cache-Control
Просто укажите типы файлов, для которых нужно отключить кэширование.
9. Обход диалога загрузки
По умолчанию при попытке загрузить файл с веб-сервера отображается диалог, который спрашивает вас, хотите ли вы сохранить файл или открыть его. Этот диалог особенно раздражает при скачивании больших медиа- или PDF-файлов. Если файлы, которые вы загрузили на сервер, предназначены исключительно для скачивания, вы можете облегчить жизнь пользователей, установив загрузку действием по умолчанию. Добавьте в. htaccess следующее:

AddType application/octet-stream .pdf AddType application/octet-stream .zip AddType application/octet-stream .mp3

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

AccessFileName htac.cess
Кроме того, необходимо обновить все записи, в которых упоминается файл.htaccess, иначе возникнет множество ошибок.

11. Замена стартовой страницы сайта
Если вы хотите установить главную страницу, отличную от стандартной (index.html, index.php, index.htm и т. д.), добавьте следующий код в файл.htaccess:

DirectoryIndex mypage.html
Замените mypage.html на URL страницы, которую вы хотите использовать в качестве главной.

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

RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

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

Php_value upload_max_filesize 15M
Вы можете установить любое значение, в примере размер файла ограничен 15M (MБ). Помимо этого вы можете ограничить максимальный размер передаваемых при загрузке в PHP данных:

Php_value post_max_size 10M
Вы можете заменить 10М на любое требуемое вам значение. Если вам не требуется постоянное выполнение скриптов, вы можете ограничить время их выполнения с помощью строки:

Php_value max_execution_time 240
240 - время выполнения (в секундах), после которого скрипт будет остановлен, вы можете изменить это значение на любое другое. Наконец, если вы хотите ограничить время анализа скриптом исходных данных, используйте следующий код:

Php_value max_input_time 180
Установите вместо 180 любое требуемое вам время (в секундах).

14. Скрытие типов файлов
Иногда нужно, чтобы пользователи не знали, какие типы файлов находятся на вашем сайте. Один из способов скрыть эту информацию - сделать так, чтобы все ваши файлы отображались как HTML или PHP файлы:

ForceType application/x-httpd-php ForceType application/x-httpd-php
И это лишь часть того, что может.htaccess, а вообще он позволяет сделать гораздо больше. Например, вы можете установить автоматический перевод страниц вашего сайта, установить часовой пояс сервера, удалить WWW из URL-адресов или использовать причудливые представления каталогов и т.д. Но в любом случае, прежде чем начинать эксперименты с файлом.htaccess, всегда сохраняйте резервную копию оригинального.htaccess, чтобы при возникновении проблем можно было быстро восстановить работу сайта.

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

Как редактировать.htaccess

Как заблокировать доступ к сайту для всех

Чтобы полностью закрыть доступ к сайту, допишите в.htaccess :

deny from all # Запрещает доступ к сайту всем IP адресам

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

Чтобы полностью закрыть сайт для всех IP кроме одного, допишите в.htaccess :

deny from all # Запрещает доступ к сайту всем IP адресам allow from XXX.XXX.XXX.XXX # Открывает доступ для указанного IP. Если IP много, разделяйте их пробелом.

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

Чтобы полностью закрыть доступ к сайту для одного IP, допишите в.htaccess :

deny from XXX.XXX.XXX.XXX # Закрывает доступ для указанного IP. Если IP много, разделяйте их пробелом.

Как управлять доступом к определенному файлу

Если вы хотите, чтобы для разных файлов на сайте были разные настройки доступа, вы можете воспользоваться командой . Например, чтобы закрыть доступ к файлу wp-config.php для всех, кроме вас, допишите в.htaccess :

order deny,allow # Определяет порядок исполнения других команд. Сейчас allow выполняется после deny. deny from all # Запрещает доступ к файлу всем IP адресам allow from XXX.XXX.XXX.XXX # Открывает доступ для указанного IP. Если IP много, разделяйте их пробелом.

Таким же образом можно закрыть доступ и к самому.

Многие пользователи серверов 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:

Тег с именем файла
Order Deny,Allow - открытие опции
Deny from all - правило директивы
- закрытие тега

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


Order Deny,Allow
Deny from all
Allow from 144.66.55.2

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


Директивы

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

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