Содержание

Файл .htaccess: правильное использование, примеры и рекомендации

Что такое .htaccess?

Файл .htaccess (англ. hypertext access) — это дополнительный механизм конфигурации веб-сервера Apache. Он используется для простой и удобной настройки веб-сервера на котором хранится сайт пользователя. Соответственно меняя настройку веб-сервера, мы сможем поменять работу сайта. Как правило, файл .htaccess находится в корневом каталоге, а его действие распространяется на весь сайт и на все подкаталоги. Если же в другом каталоге содержится свой .htaccess, то он будет действовать только на свой каталог и подкаталоги.

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

Где находится файл .htaccess?

Обычно он располагается в корневом каталоге сайта. Иногда в различных CMS может находится файл htaccess.txt, который никак не воспринимается сервером и ни на что не влияет. Чтобы он начал работать, нужно его переименовать в .htaccess. Если это не получится сделать на вашем компьютере, то зайдите на свой сервер через FTP-клиент, и переименуйте файл прямо сервере.

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

Как проверить работает ли .htaccess?

Все просто, напишите в первой строчке этого файла любое слово (например YAROBOT), сохраните файл и замените им находящийся на сервере. Если сайт продолжит работать, то .htaccess в данный момент не работает. Если же появится ошибка 500 Internal Server Error, то это значит, что веб-сервер не смог понять команду (YAROBOT) и выдал ошибку. Этот факт подтвердит, что работа .htaccess на сервере поддерживается и включена в данный момент. Чтобы вернуть сайту работоспособность удалите строчку с YAROBOT.

Далее мы поговорим о всем полезном, что можно сделать с помощью данного файла.

  1. Редирект между страницами или сайтами + изменение URL
  2. Обработка ошибок
  3. Настройка безопасности сайта
  4. Кодировка страниц сайта
  5. Оптимизация работы сайта
  6. Настройка PHP

Правильный 301 редирект через файл .htaccess

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

RewriteEngine On

301 Редирект с одной страницы на другую (или сайт)

Для этого в файл .htaccess вносим следующие строки:

Redirect 301 /старая-страница.html http://сайт.рф/новая-ст

Проверка работы htaccess и сжатие для ускорения сайта.wp.aspekti.eu

 

 

Поговорим откровенно, ДА, про htaccess и сжатие.

Думаю что встречались с ситуацией когда ваш сайт перестает отвечать на запросы.

Или начинает медленно грузиться и начинает вести себя странно. На простом хостинге помимо вашего сайта на сервере находится еще два десятка других сайтов.

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

Файл .htaccess позволяет изменять многие настройки вашего сайта … как настройки веб-сервера Apache, так и опции PHP.Вы можете использовать htaccess с разными настройками для разных каталогов.

В корне сайта вы можете объявить -Indexes, а в избранных каталогах создать ещё один файл .htaccess и в нем объявить +Indexes.

Помните !

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

И в том числе и на поддомены (поскольку директории поддоменов являются поддиректориями основного сайта).

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

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

На заметку…

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

На заметку…

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

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

Для под-домена наследуются настройки .htaccess домена.

На заметку…

При открытии директории без указания конкретного файла веб-сервер ищет файлы index.htm, index.html, index.php для отображения (индексные файлы).

Если индексные файлы отсутствуют, сервер возвращает ошибку 403 Forbidden, так как отображение списка файлов в директории по умолчанию запрещено.

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

Options +Indexes

Установка индексного файла для сайта

По умолчанию индексным файлом вашего сайта веб-сервер считает файл (в порядке приоритета): index.html, index.php.

Чтобы установить в качестве индексного файла произвольный файл, следует добавить инструкцию:

DirectoryIndex имя_файла

Например, следующая инструкция предписывает веб-серверу при обращении к сайту открывать в качестве индексной страницы скрипт на языке Perl, размещенный в директории cgi-bin вашего сайта:

DirectoryIndex /cgi-bin/engine.pl

Как включить отображение ошибок PHP?

Для отображения ошибок PHP добавьте в файл .htaccess директиву:

php_value display_errors 1

Как изменить максимальный размер загружаемых файлов в PHP?

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

php_value upload_max_filesize 20M
php_value post_max_size 20M

Вместо 20M укажите желаемый размер ограничения. Значение этих параметров не может быть больше 50M. Обратите внимание, что символ “M” (латинская M) указывается слитно со значением.

Как указать интерпретатору PHP необходимость обрабатывать не только файлы .php?

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

Например, следующая инструкция укажет интерпретатору PHP на необходимость обрабатывать файлы с расширением .phtml:

AddType application/x-httpd-php .phtml

Как изменить время хранения сессий PHP

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

По умолчанию время хранения сессий — 1440 секунд (24 минуты), cookie с идентификатором сессии — до закрытия браузера пользователем.

Для изменения времени хранения сессий PHP необходимо внести несколько изменений в .htaccess.

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

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

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

# Создайте отдельную директорию для хранения сессий вашего сайта,
# например, domains/ВАШ_САЙТ/tmp. Это необходимо, чтобы PHP не удалял сессии сайта
# при очистке старых сессий других сайтов, работающих на аккаунте.
# Установите директорию хранения сессий для сайта с помощью session.save_path.

php_value session.save_path /home/ВАШ_ЛОГИН/domains/ВАШ_САЙТ/tmp

# Установите максимальное время жизни сессии в секундах.
# 604800 – 1 неделя.
php_value session.gc_maxlifetime 604800

# Установите время жизни cookie, которая сохраняет идентификатор сессии
# в браузере пользователя.
php_value session.cookie_lifetime 604800

Обратите внимание: если сессия открывается для каждого не авторизованного пользователя, при большом количестве посетителей и длительном времени сохранения сессий образуется большое количество файлов в папке, указанной в session.save_path.

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

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

  1. Указывать вложенность директорий хранения сессий с помощью аргумента N в session.save_path. Очищать старые сессии при этом необходимо собственными скриптами. Более подробная информация об этом методе находится в описании session.save_path в документации PHP.
  2. Реализовать собственный механизм хранения сессий (например, в MySQL) и установить его с помощью session_set_save_handler().

Как включить SSI

Директивы SSI (Server Side Includes) по умолчанию обрабатываются в файлах с расширением .shtml (например, index.shtml). Чтобы SSI обрабатывались и в других файлах, необходимо в файле .htaccess указать следующие директивы:

AddType text/html .html .ssi
AddOutputFilter INCLUDES .html .ssi

Вместо “.ssi .html” укажите расширения файлов, в которых должны обрабатываться директивы SSI.

Обратите внимание:  не рекомендуется использовать в одном и том же файле PHP и SSI одновременно.

Как настроить выполнение скриптов CGI?

Для выполнения скриптов CGI в какой-либо папке необходимо настроить веб-сервер соответствующим образом с помощью файла .htaccess.

  1. В папке, в которой должны выполняться скрипты CGI, создайте файл .htaccess вида: Options +ExecCGI
    AddHandler cgi-script .cgi .pl Вместо “.cgi .pl” укажите список расширений, которые должны обрабатываться как скрипты.
  2. Загрузите скрипты в папку.
  3. С помощью Вашего файлового менеджера установите файлам скриптов права на выполнение (755).

Как изменить ограничение на использование оперативной памяти в PHP?

Для изменения ограничения на оперативную память используйте следующую директиву в .htaccess: php_value memory_limit 128M

Вместо 128M укажите желаемый размер ограничения. Обратите внимание, что символ “M” (латинская M) указывается слитно со значением.

Как сделать так, чтобы сайт всегда открывался по основному имени?

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

RewriteEngine on
RewriteCond %{HTTP_HOST} !^example.com$
RewriteRule ^(.*) http://example.com/$1 [R=301,L]

Замените example.com на основное имя вашего сайта. Теперь при обращении к сайту пользователи будут автоматически перенаправлены на его основное имя.

Немного SEO (куда же без него) 

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^black-web
RewriteRule (.*) [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.black-web.ru/ [R=301,L]
</IfModule>

Обязательно не забыть про условие <IfModule mod_rewrite.c>.

Не окажись у хостера данного модуля и ваш сайт станет выдавать 500-ую ошибку. Данный конкретный модуль входить в сборку Апача по-умолчанию. Ну а вдруг… Хостеры и их админы бывают всякие.

В данной части пользы больше для SEO. Модуль rewrite как следует из его названия занимается перенаправлениями

В этой части файла мы указали две склейки: мы склеили ваш_сайт и www.ваш_сайт Даже если пользователь наберет ваш сайт без WWW его перебросить 301 редериктом на www.ваш_сайт.

А также мы избавились /index.php в строке запроса. Если пользователь наберет www.ваш_сайт/index.php его перебросит (снова 301 редериктом) на www.ваш_сайт.

Теперь поисковики не будут путаться между www и не будут дублировать главную страницу в результатах индексирования вашего сайта. Гуглим СЕО склейки домена, если не понимаете зачем это нужно.

Итак…  .htcces и сжатие для ускорения сайта.

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

У Апача есть два модуля сжатия.

Оба не являются модулями по умолчанию, поэтому необязательно могут присутствовать у вашего провайдера. Но как показала практика у 99% провайдеров один из них стоит.

Наиболее распространен mod_deflate. Чтобы его с помощью сжимать весь контент на вашем сайте добавьте в .htaccess следующие строки:

<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>

Как видите мы должны перечислить mime type файлов, которые следует подвергать сжатию.

Сюда можно добавить и видео и картинки, но толку это даст мало. Потому что jpeg или gif уже сами по себе являются сжатыми форматами. Также как avi или flv. Вы фактически нечего не выиграете указав их.

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

<IfModule mod_gzip.c>
mod_gzip_on         Yes
mod_gzip_dechunk    Yes
mod_gzip_item_include file                \.(html?|txt|css|js|php|pl)$
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.*
</IfModule>

Данный модуль умеет работать с масками, что несомненно большой плюс.

Да и синтаксис у него куда более гибкий чем у предыдущего. Но используют его реже. А по сжатию я даже не берусь судить, который из модулей лучше.

Я сильной разницы не заметил при тестах. В принципе, все детали Gzip можно очень четко отследить в Page Speed, но так же есть онлайн сервисы, которые способны дать вам информацию о том, включена ли эта архивация или нет.

Можете воспользоваться этим или этим онлайн сервисом для проверки включения сжатия на вашем сервере.

Оказывается можно быстрее … Если применить хеширование страниц.

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

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

В html разметки мы всегда можем использовать meta теги. И через php мы может устанавливать заголовки ответа сервера. Остается вопрос, как быть с css, js, image и т.д. и т.п.

Помочь нам в этом могут два модуля: mod_headers и mod_expires которые могут установить заголовки в ответ сервера и подсказать вашему браузеру, что и как нужно хешировать.

Один из модулей обычно стоит у провайдера, но как и в случае с любым модулем, который не входит в стандартную сборку Апача, 100% гарантии никто вам не даст. Поэтому снова во избежание 500й ошибки указывает условия для каждого из модулей.

<ifModule mod_headers.c>
#кэшировать html и htm файлы на один день
<FilesMatch “\.(html|htm)$”>
Header set Cache-Control “max-age=43200”
</FilesMatch>
#кэшировать css, javascript и текстовые файлы на одну неделю
<FilesMatch “\.(js|css|txt)$”>
Header set Cache-Control “max-age=604800”
</FilesMatch>
#кэшировать флэш и изображения на месяц
<FilesMatch “\.(flv|swf|ico|gif|jpg|jpeg|png)$”>
Header set Cache-Control “max-age=2592000”
</FilesMatch>
#отключить кэширование
<FilesMatch “\.(pl|php|cgi|spl|scgi|fcgi)$”>
Header unset Cache-Control
</FilesMatch>
</IfModule>

Вот такой синтаксис у mod_headers.

В данной секции я отключил хеширование php файлов. Хотя по моему мнению небольшой временной интервал хеширования им не повредит.

5-30 секунд, это интервал времени, за который мало что меняется. А многие пользователи любят пользоваться клавишей back (вернуться назад).

Чтобы не загружать им страницу второй раз, а подхватить её из кеша, разумный интервал кеширования все же уместен. Во второй секции где идут условия для mod_expires я именно так и делаю — для php ставлю небольшой интервал кеширования.

<ifModule mod_expires.c>
ExpiresActive On
#по умолчанию кеш в 5 секунд
ExpiresDefault “access plus 5 seconds”
#кэшировать флэш и изображения на месяц
ExpiresByType image/x-icon “access plus 2592000 seconds”
ExpiresByType image/jpeg “access plus 2592000 seconds”
ExpiresByType image/png “access plus 2592000 seconds”
ExpiresByType image/gif “access plus 2592000 seconds”
ExpiresByType application/x-shockwave-flash “access plus 2592000 seconds”
#кэшировать css, javascript и текстовые файлы на одну неделю
ExpiresByType text/css “access plus 604800 seconds”
ExpiresByType text/javascript “access plus 604800 seconds”
ExpiresByType application/javascript “access plus 604800 seconds”
ExpiresByType application/x-javascript “access plus 604800 seconds”
#кэшировать html и htm файлы на один день
ExpiresByType text/html “access plus 43200 seconds”
#кэшировать xml файлы на десять минут
ExpiresByType application/xhtml+xml “access plus 600 seconds”
</ifModule>

Подведем итог…

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

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

В результате всех манипуляций имеется такой файл следующего содержания:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
<IfModule mod_deflate.c>
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
</ifmodule>
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault “access plus 5 seconds”
ExpiresByType text/html “access plus 1 seconds”
ExpiresByType image/gif “access plus 2592000 seconds”
ExpiresByType image/jpeg “access plus 2592000 seconds”
ExpiresByType image/png “access plus 2592000 seconds”
ExpiresByType text/css “access plus 604800 seconds”
ExpiresByType text/javascript “access plus 604800 seconds”
ExpiresByType application/x-javascript “access plus 604800 seconds”
<ifModule mod_headers.c>
<filesMatch “\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$”>
Header set Cache-Control “max-age=2592000, public”
</filesMatch>
<filesMatch “\.(css)$”>
Header set Cache-Control “max-age=604800, public”
</filesMatch>
<filesMatch “\.(js)$”>
Header set Cache-Control “max-age=216000, private”
</filesMatch>
<filesMatch “\.(xml|txt)$”>
Header set Cache-Control “max-age=216000, public, must-revalidate”
</filesMatch>
<filesMatch “\.(html|htm|php)$”>
Header set Cache-Control “max-age=1, private, must-revalidate”
</filesMatch>
</ifModule>
</IfModule>
# END WordPress

А вот профессионально написанный .hatcces  https://github.com/Roosso/other/blob/master/.htaccess

По мне многовато там всячины а может и ошибаюсь. Для тех у кого все получилось, идем на www.webpagetest.org и пробуем мерить красоту до и после.

Думаю, получился у Вас htaccess!

 

Защита сайта с помощью .htaccess и .htpasswd

В данной статье будет рассмотрен самый простой и доступный способ защиты — базовая аутентификация.

Замечание

Аутентификация — процесс, с помощью которого проверяется, что некто является именно тем, за кого он себя выдает. Как правило, проверка включает в себя ввод имени и пароля.

Рассмотрим, как работает базовая аутентификация.
При обращении посетителя в защищаемую директорию, сервер Apache в ответ на запрос посылает заголовок с кодом 401 (401 authentication required header). Браузер посетителя принимает заголовок с кодом 401 и выводит окно с полями для ввода имени пользователя и пароля. После ввода имени и пароля эти данные отсылаются назад серверу, который проверяет имя пользователя на предмет нахождения в специальном списке, а пароль на правильность. Если все верно, то посетитель получает доступ к ресурсу. Вместе с заголовком браузеру посылается специальной имя, называемое областью действия. Браузер кэширует не только имя и пароль, чтобы передавать их при каждом запросе, но и область действия. Благодаря этому, ввод имени и пароля в защищаемой директории осуществляется только раз. В противном случае их необходимо было бы вводить при каждом запросе к защищаемой директории. Кэширование параметров аутентификации (имя, пароль, область действия), обычно осуществляет только в пределах одного сеанса.

Замечание

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

Замечание

WEB-сервер Apache поддерживает еще один вид защиты — digest-аутентификацию. При digest-аутентификации пароль передается не в открытом виде, а в виде хеш-кода, вычисленному по алгоритму MD5. Поэтому пароль не может быть перехвачен при сканировании трафика. Но, к сожалению, для использования digest-аутентификации необходимо установить на сервер специальный модуль — mod_auth_digest. А это находится только в компетенции администрации сервера. Также, до недавнего времени, digest-аутентификация поддерживалась не всеми видами браузеров.

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

1. WEB-сайт и FTP-доступ к нему.
2. Права на создание файлов .htpaccess и организацию защиты с помощью них.
3. Утилита генерации паролей htpasswd.exe

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

Замечание

Удобно создавать файлы .htaccess с помощью встроенного редактора в оболочках Far, WindowsCommander, TotalCommander и т.п., а также в редакторе Блокнот.

Замечание

Чтобы блокнот не подставлял автоматически расширение txt, в диалоге сохранения в выпадающем списке «тип файла» следует выбрать опцию «Все файлы».

Перед тем как сохранить файл, впишите в него следующие строки:

AuthType Basic
AuthName admin
require valid-user

Затем, через FTP-доступ, перепишите файл .htaccess на сайт, в ту директорию, которую вы хотите защитить.

Замечание

Действие файлов .htaccess распространяется не только на ту директорию, где лежит файл, но и на все поддиректрии, лежащие уровнем ниже.

Далее через браузер обратитесь к этой директории. Если Вы защищаете директорию admin и переписали туда файл .htaccess, то для проверки Вам следует вписать в адресную строку браузера следующий URL: http://www.mysite.ru/admin/.

Если после этого Вам открылся запрос на ввод логина и пароля, как на рисунке ниже, то тестирование прошло успешно и можно продолжать защиту директории.

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

Замечание

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

Файл с паролями создается утилитой htpasswd.exe. Если у Вас на машине установлен WEB-сервер Apache, то данная утилита находится в директории с установленным Apache-ем в подкаталоге bin.

Замечание

Если у Вас не установлен Apache, то утилиту htpasswd.exe можете скачать по ссылке: http://www.softtime.ru/files/htpasswd.zip.

Для работы с утилитой htpasswd.exe необходим интерфейс работы с командной строкой. Интерфейсом работы с командной строкой обладают такие программы как Far, WindowsCommander и т.п. Здесь будет рассмотрена работа с командной строкой с помощью утилиты cmd, которая входит в поставку Windows 2000/XP и т.п.
Нажмите «Пуск»->»Выполнить», введите в строку ввода cmd и нажмите ОК. Вам откроется окно утилиты CMD.

Далее необходимо перейти в директорию, где находится утилита htpasswd.exe. Допустим, сервер Apache установлен в директории с:/Apache2, тогда введите в командную строку команду: cd../../apache2/bin и нажмите ввод.

Вы перешли в директорию с:Apache2 in. Теперь нужно дать команду на создание файла с паролем. Введите в командную строку следующее:

htpasswd -cm .htpasswd admin

* -cm — это ключи для утилиты. Ключ с — указывает, что необходимо создать новый файл с паролями. Если файл с таким именем уже существует, то он будет перезаписан. Ключ m — определяет шифрование по алгоритму MD5.
* .htpasswd — имя файла с паролями (можете использовать любое имя).
* admin — имя посетителя, которому будет разрешен доступ в закрытую область сайта.

В ответ, должен появится запрос на ввод пароля и его повтор. Если все правильно, то в завершении появится сообщение: Adding password for user admin. И в директории c:Apache2 in появится файл .htpasswd, к котором будет находиться строка с именем пользователя и хеш-кодом его пароля. Для того, что бы в тот же файл .htpasswd добавить еще одного пользователя следует убрать ключ -c из команды запуска утилиты htpasswd.exe

htpasswd -m .htpasswd admin

Замечание

Если файл с паролями не был создан, то возможно, некоторые ключи утилиты не поддерживаются в Вашей операционной системе. Например, иногда не поддерживается ключ m. В этом случае, Вам нужно ввести htpasswd -c .htpasswd admin
Для того, чтобы посмотреть ключи и параметры работы утилиты введите htpasswd.exe /? Вам будет выдано описание интерфейса.

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

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

Для защиты директории могут использоваться следующие директивы:

* AuthType — Тип используемой аутентификации. Для базовой аутентификации эта директива должна иметь значение: Basic
* AuthName — Имя области действия аутентификации. Текст, помогающий посетителю понять, куда он пытается получить доступ. Например, может быть написано: «Private zone. Only for administrator!»
* AuthUserFile — путь к файлу с паролями (.htpasswd).
* AuthGroupFile — путь к файлу групп, если он существует.
* Require — Одно или несколько требований, которые должны быть выполнены для получения доступа к закрытой области.

AuthType Basic
AuthName "Private zone. Only for administrator!"
AuthGroupFile /usr/host/mysite/group
AuthUserFile /usr/host/mysite/.htpasswd
require group admins

Следует более подробно описать директивы AuthUserFile и AuthGroupFile. В них прописываются абсолютные пути к соответствующим файлам от корня сервера.

Внимание!

Относительные пути работать не будут!

Путь от корня сервера, можно узнать, спросив у администрации сервера, либо можно попробовать выяснить его самим. Для этого выполните функцию phpinfo(). На экран будет выведена фиолетовая таблица. Значение абсолютного пути от корня сервера можно посмотреть в переменных: doc_root, open_basedir, DOCUMENT_ROOT.
Директива Require определяет кому разрешен доступ к закрытой области. Например,

* require valid-user — разрешен доступ всем прошедшим проверку
* require user admin alex mango — разрешен доступ только посетителям с именами admin, alex, mango. Естественно, они должны пройти аутентификацию.
* require group admins — разрешен доступ всем пользователям из группы admins

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

Пример файла групп

Admins: admin alex mango
Users: guest user max23

В группу Admins входят посетители с именами admin, alex, mango. А группу Users входят посетители с именами guest, user, max23.

Примеры файлов .htaccess

Доступ всем пользователям, прошедшим авторизацию

AuthType Basic
AuthName "Private zone. Only for administrator!"
AuthUserFile /usr/host/mysite/.htpasswd
require valid-user

Доступ только пользователям admin и root

AuthType Basic
AuthName "Private zone. Only for administrator!"
AuthUserFile /usr/host/mysite/.htpasswd
require user admin root

Доступ только пользователей из группы admins

AuthType Basic
AuthName "Private zone. Only for administrator!"
AuthUserFile /usr/host/mysite/.htpasswd
AuthGroupFile /usr/host/mysite/group
require group admins

Запрет доступа только к файлу private.zip

AuthType Basic
AuthName "Private zone. Only for administrator!"
AuthUserFile /usr/host/mysite/.htpasswd
require valid-user

htaccess — работающий код файла