Закрытие доступа к разделам сайта при помощи HTTP-авторизации
Предположим, у нас есть сайт mynewsite.ru
, и на этом сайте есть каталог privatedir
. В каталоге privatedir
мы бы хотели разместить файлы, которые должны быть доступны не всем, а только тем, у кого есть логин и пароль.
Для этого закроем каталог privatedir
HTTP-авторизацией. Стоит заметить, что базовая авторизация HTTP может считаться достаточно защищенной только если вы вводите логин и пароль, подключаясь к сайту по HTTPS. При открытии сайта по HTTP логин и пароль передаются в открытом виде и могут быть легко перехвачены.
Текущая структура сайта сейчас выглядит так:
├── mynewsite.ru
│ ├── cgi-bin
│ ├── log -> /var/log/apache2/user-logs/mynewsite.ru
│ └── www
│ └── privatedir
Настройка HTTP-авторизации
Сначала подключитесь к серверу по SSH.
Далее перейдите в каталог с сайтом. В нашем случае это /home/newphp/mynewsite.ru/www/privatedir
Например:
cd /home/newphp/mynewsite.ru/www/privatedir
Создайте файл .htaccess:
nano .htaccess
В открывшемся редакторе nano вставьте следующий текст:
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /home/newphp/mynewsite.ru/.htpasswd
Require valid-user
Вместо /home/newphp/mynewsite.ru/.htpasswd
укажите путь на вашем сервере.
Сохраните содержимое нажав на клавиатуре “CTRL + O”, и далее Enter.
После этого выполните в консоли команду
htpasswd -c /home/newphp/mynewsite.ru/.htpasswd user
Укажите желаемый пароль и нажмите Enter. Введите пароль еще раз и вновь нажмите Enter.
Теперь осталось проверить все ли работает правильно. Для этого откройте каталог в браузере. В нашем примере это была бы ссылка https://mynewsite.ru/privatedir
Готово!