Очень часто, во время разработки сайта либо веб сервиса появляется необходимость запретить доступ к конкретной странице либо конкретному разделу сайта (директории). Один из вариантов это сделать — использовать htpasswd.
В данном примере мы рассмотрим блокировку доступа к директории test которая находится в корне сайта.
Первое, что нам нужно будет сделать — создать файл в котором в зашифрованном виде будут находится имена пользователей и пароли. Именно с этими данными будет производится проверка при вводе имени пользователей и пароля при получении доступа к закрытому сайту либо директории.
Для создания файла htpasswd подключается к серверу, на котором мы будем ограничивать доступ, подключаемся по SSH и выполняем следующую команду:
Разберем подробнее каждый ключ
-с — отвечает за создание нового файла -B — в качестве шифрования использует алгоритм bcrypt /var/www/passwd/.htpasswd — путь и имя создаваемого файла username — имя пользователя
После выполнения данной команды вам необходимо будет ввести пароль который будет использоваться для данного пользователя.
Если же вы захотите добавить новых пользователей для доступа к закрытой части сайта, то вам необходимо будет выполнить следующую команду:
Для удаления определенного пользователя из файла используется ключ -D , указывается путь к файлу htpasswd и имя пользователя.
После внесения пользователей установим права на доступ к данному файла, укажем, что доступ к данному файлу будут иметь все пользователи системы.
Для того чтобы наша «блокировка» работала нам необходимо изменить значение у переменной AllowOverride с None на All . Для этого открываем файл конфигурации вашего вебсервера , обычно данный файл находится по адресу /etc/apache2/apache2.conf либо /etc/apache2/conf.d/ либо /etc/apache2/sites-enabled/ в файле который отвечает за подключение вашего доменного имени ищем значение AllowOverride и меняем его на All .
Мой файл выглядит следующим образом, ваш может отличаться.
После внесения изменений перегружаем вебсервер
После создания файла htpasswd нам необходимо будет создать либо отредактировать уже имеющийся файл .htaccess .
Корневая директория сайта у меня находится по адресу /var/www/html , в данной директории находится папка test и в ней php файл который выводит информацию о версии php. Для того чтобы ограничить доступ к в папке test создадим в ней файл .htaccess в который добавим следующие строки :
В переменную AuthUserFile указываем путь к нашему файлу который мы создавали.
Теперь если мы перейдем по адресу сайта sitename.com/test то нас попросит ввести логин и пароль.
После ввода логина и пароль мы увидим нашу страницу.
В случаи если вам нужно ограничить доступ лишь к одной странице (файлу) для этого нужно указать имя файла для доступу к которому будет запрашиваться имя пользователя и пароль
Вот таким простым способом вы можете ограничивать доступ к определенным частям вашего сайта.