Кто не знает, как сделать так, чтобы файлы .htaccess работали на Вашем домашнем компьютере можете почитать на этой страничке, как это сделать.
Итак, здесь мы рассмотрим лишь немногие предназначения файла .htaccess в ваших папках на сервере. Он осуществляет непосредственное управление файлами в Ваших папках, то есть Вы сможете установить такие режимы использования Ваших файлов какие захотите. Кроме этого, рекомендуем почитать о Правах доступа к файлам и папкам, для кто этого не знает. Итак:
Во-первых, очень нужное использование файла под названием .htaccess - это запрет для прочтения любым процессом извне данных из файлов. Например, нужно чтобы никто не имел доступ к файлу конфигурации через http доступ, то есть никому не даем смотреть файл конфигурации. Тогда, в папке с этим файлом размещаем файл .htaccess с такими строками:
Options -Indexes
deny from all
После этого, никто не сможет прочитать ни один файл в этой папке, так как она для этого закрыта.
Если Вы хотите закрыть доступ для определённых IP, то файл в .htaccess пишем такие строки
Options -Indexes
deny from 127.0.0.1
Теперь, пользователь с IP 127.0.0.1 не сможет зайти на сайт, естественно, .htaccess пишем в головную папку сайта. Чтобы не дать допуск к сайту всем IP от данного провайдера, усечём его до второй точки
Options -Indexes
deny from 127.0.
Теперь все Ip (127.0.0.1, 127.0.1.1, 127.0.2.2, итд) не смогут зайти на Ваш сайт.
Во-вторых, если Вы не хотите чтобы Ваш сайт или любая другая папка начиналась, например, не с index.html (то есть, как сделано по умолчанию), а хотите, чтобы при запросе пользователь сразу обращался к Вашему файлу, например - all.php (как это сделано у нас), помещаем .htaccess в нашу папку и пишем в нём такую строку:
DirectoryIndex all.php
Тогда, при запросе http://наш_сайт.ru/, пользователь автоматически будет перенаправлен на http://наш_сайт.ru/all.php. То есть, DirectoryIndex дает возможность установить по умолчанию с какого файла начинать просмотр папки, то есть какой файл читать в первую очередь.
В-третьих, файлом .htaccess Вы сможете создать "закрытую зону", в которую можно попасть используя пароль и логин. Например, папка для служебного пользования или администрирования. В этом случае, заведем на сервере дополнительную папку, назовем ее passwd (http://ваш_сайт.ru/passwd/). Создадим в ней временный файл test.php, из которого мы узнаем полный путь до этой папки на сервере, записав в него такие строки:
<?php
$path = getcwd ();
$path = str_replace ('\\', '/', $path);
echo $path;
?>
При запуске test.php (http://ваш_сайт.ru/passwd/test.php) узнаем
полный_путь_до_passwd_на_сервере
После этого, запишем в passwd файл .htpasswd с данными логина и пароля через ":", выглядеть .htpasswd будет так:
login:password
Так будет выглядеть Ваш файл с парой "логин:пароль" в Windows, то есть просто записали в файл с паролями Ваши пароль и логин, и больше ничего не надо. Но на системах Linux его надо зашифровать. То есть, как появляется в базе новый пользователь с парой "логин:пароль" на системах Unix? Там администратор вводит в командную строку: htpasswd -nb userfiile login password. После этого, в файле userfiile появляется пользователь с именем Login и зашифрованным паролем типа d8bny9xqDGvHc. Он появляется после автоматической шифрацией его сервером Apache. Тогда строка login:password в .htpasswd:
login:d8bny9xqDGvHc
При авторизации сервер поймет, что это пользователь login с паролем password. То есть, покажем как шифруется пароль сервером Apache:
<?php
$password = "ваш_пароль";
$path_t = substr ( md5 ( uniqid ($password)), 0, 3). "-56";
$password = crypt ($password, $path_t);
?>
На выходе такого скрипта и получим такой зашифрованный пароль, какой должен быть при работе самого сервера Apache. Закроем папку passwd для просмотра другими пользователями, как это сделать, мы рассмотрели в первом случае использования .htaccess, то есть запишем его в папку passwd со словами:
Options -Indexes
deny from all
Проверим запускается ли теперь наш файл test.php. Вы увидите, что не запускается, но нам он уже больше не нужен. Итак, мы создали папку passwd, узнали полный путь до нее, создали в ней файл с Вашими логин и паролем, плюс закрыли ее для просмотра другими пользователями.
Теперь создадим приватную папку, например privat (http://ваш_сайт.ru/privat/), в которую можно будет попасть, только, зная Ваш логин и пароль. Создаем в ней приватный файл privat.php (http://ваш_сайт.ru/privat/privat.php), например, для админских функций. И, наконец, записываем в нее .htaccess со следующими строками:
AuthType basic
AuthName 'Authorization...'
AuthUserFile 'полный_путь_до_passwd_на_сервере/.htpasswd'
Require valid-user
DirectoryIndex privat.php
Что мы прописали в файле .htaccess в этот раз:
Первая строка - тип аутентификации
Вторая строка - что будет написано в диалоговом меню
Третья строка - откуда берем логин и пароль, полный путь до passwd мы ранее узнали.
Четвертая строка - для всех у кого совпали логин и пароль продолжить не отвергая
Пятая строка - при удачной авторизации переправляем пользователя на файл privat.php
Что в итоге, у нас получилось:
папка: passwd ..
.htpasswd
login:d8bny9xqDGvHc
.htaccess
Options -Indexes
deny from all
папка: privat ..
privat.php Ваш недоступный скрипт
.htaccess
AuthType basic
AuthName 'Authorization...'
AuthUserFile 'полный_путь_до_passwd_на_сервере/.htpasswd'
Require valid-user
DirectoryIndex privat.php
Теперь, чтобы пользователь попал на файл privat.php, ему надо пройти аутентификацию, иначе сервер выдаст ошибку.
Посмотреть как это выглядит можно здесь. Логин - pass, пароль - pass.
Попробуйте другие пароли и логины, Вы увидите, что к файлу privat.php доступа у Вас не будет. Кроме этого, после того как Вы авторизированы, больше пароль запрашиваться не будет.