Аутентификация · 4 min read · Jan 04, 2026

.htaccess Аутентификация На Подкаталогах

.htaccess Аутентификация На Подкаталогах

Автор: Наяр Ахмад

Контакт: nayyares AT gmail DOT com

Домашняя страница: www.cbtcandy.org

Посвящение: Баджи, за все те усилия, которые она сделала для меня.

Предисловие:

.htaccess используется для изменения конфигурации на уровне каталога, этот файл может содержать одну или несколько директив, которые будут применены к каталогу, содержащему файл .htaccess.

.htaccess — это популярное название этого файла для изменения конфигурации, вы можете изменить это имя по умолчанию, изменив параметр AccessFileName в конфигурационном файле Apache. т.е.

AccessFileName .anyname

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

Итак, начнем :)

Здесь я предполагаю, что ваш каталог DocumentRoot — это /var/www/html, но если у вас есть конфигурация VirtualHost или Apache настроен на какой-то другой корневой каталог, вы можете настроить это в соответствии с вашей ситуацией.

Примечание: Я возьму два фиктивных имени для этих каталогов как test-dir1 и test-dir2.

1 Создание каталога:

$ cd /var/www/html
$ mkdir test-dir1
$ mkdir test-dir2

2 Создание тестового HTML файла:

Создание html файла в первом каталоге.

$ cd /var/www/html/test-dir1
$ cat > index.htm

| ТЕСТОВАЯ СТРАНИЦА В TEST-DIR1. |

Создание html файла во втором каталоге.

$ cd /var/www/html/test-dir2
$ cat > index.htm

| ТЕСТОВАЯ СТРАНИЦА В TEST-DIR2. |

3 Просмотр тестовых страниц:

Теперь вы можете просмотреть и протестировать, доступны ли страницы или нет, открыв любой веб-браузер, мне нравится Firefox (он крут :) ) и введите:

http://localhost/test-dir1/

Это отобразит тестовую страницу первого каталога, а

http://localhost/test-dir2/

отобразит вторую тестовую страницу в test-dir2.

Если вы можете увидеть обе страницы, это означает, что вы почти готовы к использованию .htaccess.

4 Создание файла .htaccess:

$ cd /var/www/html/test-dir1
$ vi .htaccess

Запишите следующие строки в этот файл:

| AuthName "Только авторизованные пользователи." AuthType Basic AuthUserFile /etc/httpd/conf/.htpasswd require user testusr |

Теперь я объясню, какие магические строки мы написали в этом файле:

Параметр AuthName просто определяет заголовок окна ввода пароля, когда пользователь входит в систему, в то время как AuthType сообщает серверу, какой тип обработки используется, а Basic является наиболее распространенным и вполне достаточным для почти любой цели. AuthUserFile используется для определения местоположения файла .htpasswd, этот файл содержит пароль пользователя, который будет аутентифицирован в файле .htaccess. require user используется для идентификации доверенного пользователя, если есть более одного доверенного пользователя, вы можете указать их имена в списке, разделенном пробелами.

Теперь, чтобы защитить test-dir2 с помощью .htaccess, нам нужно скопировать его из test-dir1 в test-dir2 ** с помощью следующей команды:

$ cp /var/www/html/test-dir1/.htaccess /var/www/html/test-dir2/

5 Создание пользователя:

Здесь мы создадим тестового пользователя, чтобы проверить наш .htaccess:)

$ adduser testusr
$ passwd testusr

6 Информирование Apache о пользователях:

Теперь мы должны проинформировать Apache о пользователе и его пароле, но прежде чем перейти к этому шагу, у меня есть социальная обязанность, т.е. объяснить разницу между установкой Apache через RPM и из исходников. :) Если вы установили Apache из RPM, то он установит все связанные команды в вашем /usr/local/bin, так что проблем нет, вы можете использовать команду htpasswd где угодно в вашей системе, но если вы установили Apache из исходников, вам нужно найти каталог bin Apache, чтобы выполнить команду htpasswd. В этом HowTo я дам оба способа, вот они:

$ htpasswd -c /etc/httpd/conf/.htpasswd testusr

Вышеуказанная команда будет работать, если у вас есть htpasswd в вашем /usr/local/bin, и это происходит, если вы установили Apache из RPM. /etc/httpd/conf/.htpasswd — это местоположение файла, который будет содержать пароль аутентифицированного/доверенного пользователя.

ИЛИ

$ cd /apache/bin/
$ ./htpasswd -c /etc/httpd/conf/.htpasswd testusr

Вышеуказанные команды корректны, если вы установили Apache из исходников, $ cd /apache/bin можно настроить в соответствии с вашей системой, так как, возможно, вы установили его где-то еще.

7 Права доступа к файлу .htpasswd:

Нам нужно установить права доступа к файлу .htpasswd и сделать пользователя apache владельцем этого файла.

$ chown apache.apache /etc/httpd/conf/.htpasswd

8 Редактирование httpd.conf:

Теперь нам нужно отредактировать httpd.conf, так как Apache должен быть проинформирован о .htaccess, здесь мы изменим AllowOverride All | none на Authconfig, теперь есть два случая: один, если вы хостите только один сайт, и другой, если у вас есть VirtualHost, вот первый случай:

В этом случае у вас будет только один тег Directory в файле httpd.conf, так как мы хостим только один сайт, поэтому мы отредактируем тег для /var/www/html.

| AllowOverride AuthConfig Order allow,deny Allow from all |

Теперь для второго случая, когда у нас несколько сайтов, т.е. VirtualHost:

| DocumentRoot /var/www/html/cbtcandy ServerName www.cbtcandy.org AllowOverride AuthConfig Order allow,deny Allow from all Options -Indexes |

9 Перезапуск Apache:

Теперь вам нужно перезапустить сервер Apache, чтобы перезагрузить конфигурацию.

Для системы на основе RPM:

$ service httpd restart

Для системы на основе исходников, настройте путь к каталогу bin вашего Apache.

$ /apache/bin/apachectl restart

10 Тестирование:

Теперь все готово к тестированию, снова откройте ваш любимый браузер и попробуйте открыть следующие ссылки:

http://localhost/test-dir1/

и

http://localhost/test-dir2/

Примечание: Когда вы просматриваете эти ссылки, вас попросят ввести имя пользователя и пароль, как только вы их предоставите, вас перенаправит на тестовую страницу. Но как только вы войдете в один каталог, вам не потребуется вводить имя пользователя и пароль для другого тестового каталога, так как Apache не будет запрашивать имя пользователя и пароль снова и снова для каталогов одного уровня или подкаталогов. Итак, как только вы аутентифицированы, дочерние и параллельные каталоги открыты для использования. Но если вы все же хотите их проверить, используйте текстовый браузер links, именно это я делаю для их проверки.*

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.