X

Как закрыть доступ к сайту паролем

👁5 145 просм.

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

С подобными задачами отлично справляются штатные функции встроенной защиты 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 — расширения файлов, к которым будет открыт доступ в закрытой директории.

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

Категории: WEB разработка
Сергей Коваленко: @BlessSergeyКонсультирую и делюсь своим опытом Поисковой оптимизации (SEO), WEB разработки, настройки контекстной рекламы и рекламы в соцсетях. С 2007 года я занимаюсь работой в сфере информационных технологий. Начинал с работы мастером по ремонту компьютеров и компьютерной техники в небольшой компании. Затем, повысив уровень своих знаний и навыков, занялся удаленным администрированием информационно технических сетей предприятий. Побывал на должности руководителя отдела инженерно технических средств безопасности. Сейчас нашел себя в такой многофункциональной среде как WEB разработка. Развиваю свои навыки в проектировании и обслуживании сайтов на различных платформах. Изучаю WEB разработку на популярной CMS Wordpress, занимаюсь SEO оптимизацией сайтов, контекстной рекламой в поисковых системах Google и Yandex, а так же в социальных сетях Facebook и Vkontakte.