Как закрыть доступ к сайту паролем
При разработке нового сайта, а так же при его использовании бывают различные ситуации, когда нужно закрыть доступ к сайту паролем. Это может быть обусловлено необходимостью запретить индексирование контента нового ресурса поисковыми системами в период разработки. Или может появиться необходимость закрыть доступ неавторизированных пользователей к определенным разделам, документам сайта.
С подобными задачами отлично справляются штатные функции встроенной защиты WEB-сервера Apache. И для того, чтоб ими воспользоваться не нужно углубленных знаний языков программирования. Достаточно выполнить следующую последовательность действий: создать файл с паролями, назвав его .htpasswd, переписать его на сервер; и создать файл .htaccess, с указаниями по защите, и записать его в директорию на сервере, которую необходимо защитить паролем. Если необходимо защитить паролем полностью весь сайт, то информация файла .htaccess должна находиться в корневой директории.
Как создать файл паролей .htpasswd
.htpasswd, — это обычный текстовой файл, он должен иметь следующую структуру:
user_1:password_1
user_2:password_2
и т.д.
Чтоб создать этот файл откройте приложение «Блокнот» на компьютере, либо другой текстовый редактор, и сохраните новый документ под именем .htpasswd, без расширения txt. При сохранении нового файла выберите кодировку UTF-8.
Далее, на первом этапе придумайте новый логин и сгенерируйте новый пароль, воспользовавшись страницей генератора паролей. Сохраните полученные данные.
Затем, на втором этапе сгенерируйте содержимое файла .htpasswd, воспользовавшись генератором содержимого для .htpasswd. В поле «Логин» укажите придуманный вами логин, в поле «Пароль», — сгенерированный ранее пароль. После чего, полученный результат сохраните в созданном ранее документе .htpasswd.
Обратите внимание, что никакого другого содержимого, кроме как из полученной формы, в файле .htpasswd быть не должно. Созданный на первом этапе логин и пароль нужно будет указывать в поле авторизации на сайте.
Теперь сохраните на сервере полученный файл .htpasswd. Для более надежной защиты лучше положить его в директорию не доступную через www. Это может быть любая созданная вами папка на одном уровне с директорией, в которой содержатся файлы вашего сайта. Теперь скопируйте путь к сохраненному файлу на хостинге.
Если не удается узнать абсолютный путь то скачайте этот скрипт, разархивируйте его и положите в корневую директорию сайта. После чего введите в поисковой строке браузера имя вашего домена с указанием названия скрипта «ups.php». Например, moysite.com/ups.php . В результате выполнения скрипта вы увидите примерно следующую информацию:
Document root: /home/XXXXX/YYYYY Полный путь к скрипту и его имя: /home/XXXX/YYYYY/ups.php Имя скрипта: /ups.php
Подставьте в путь, указанный в строке «Полный путь к скрипту и его имя» название созданной вами папки вместо YYYYY и .htpasswd, вместо ups.php. Таким образом вы получите абсолютный путь к сохраненному на хостинге файлу .htpasswd. Это нам понадобится для следующего шага.
Как создать файл защиты .htaccess
Теперь, когда файл с паролями создан, нам нужно создать файл .htaccess, который будет защищать доступ к директории, в которую мы его сохраним.
Если вы хотите защитить доступ полностью ко всему ресурсу, и в корневой директории сайта уже есть файл .htaccess, то вам достаточно добавить в конце этого файла следующую информацию:
AuthType Basic AuthName "Protected Area" AuthUserFile /home/XXXX/YYYYY/.htpasswd Require valid-user
Где вместо /home/XXXX/YYYYY/.htpasswd указать ваш абсолютный путь к сохраненному на хостинге файлу .htpasswd, который мы узнали ранее.
Если же вы хотите защитить паролем определенную директорию, то необходимо создать новый чистый файл .htaccess, по аналогии с тем, как мы создавали файл .htpasswd. И внести в него только лишь информацию с правилами для защиты, которая показана в предыдущем абзаце. После чего его нужно сохранить, и записать в директорию, которую необходимо запаролить.
Теперь, если мы будем пытаться зайти в запароленную директорию, то увидим следующее окно авторизации, в котором нужно указать логин и пароль, полученный на первом этапе формирования файла .htpasswd
Как закрыть доступ к сайту паролем с исключениями
Кроме того, указав следующую информацию в файле .htaccess при необходимости можно:
- Открыть доступ только к определенному файлу
require valid-user Authname "Protected" Authtype Basic AuthUserFile "/home/XXXX/YYYYY/.htpasswd" <Files page.php> allow from all satisfy any </Files>
где page.php — файл, к которому необходимо оставить доступ открытым.
- Открыть доступ только к файлам с определенным расширением
require valid-user Authname "Protected" Authtype Basic AuthUserFile "/home/XXXX/YYYYY/.htpasswd" <Files *.pdf> allow from all satisfy any </Files>
где .pdf — расширение файлов, к которым будет открыт доступ в закрытой директории.
- Открыть доступ к файлам с несколькими расширениями
require valid-user Authname "Protected" Authtype Basic AuthUserFile "/home/XXXX/YYYYY/.htpasswd" <FilesMatch ".(gif|bmp|tiff|swf)$"> allow from all satisfy any </FilesMatch>
где gif, bmp, tiff, swf — расширения файлов, к которым будет открыт доступ в закрытой директории.
Надеюсь, что эта информация была полезна для вас.
Если остались вопросы по теме, или что-то не получается внедрить, не стесняйтесь спрашивать в комментариях. 🙂