Назад | Перейти на главную страницу

Могу ли я использовать один файл .htaccess для разных папок на сервере Linux

У меня есть разные папки, к которым я хочу запретить доступ. Но я не хочу разделять по разным папкам.

Поскольку у меня есть htaccess, а htpasswd применяется к

/admin1
/admin2
/admin3

Я хочу, чтобы, если пользователь вводит пароль для имени пользователя из папки admin1, он сможет получить доступ к admin2 и admin3 без повторного ввода имени пользователя и пароля

Но если кто-то имеет доступ только к admin2, он должен ввести имя пользователя и пароль

Что-то вроде единого входа

Я получаю доступ к ним через веб-интерфейс http://abc.com/admin

Вместо того, чтобы помещать один и тот же файл во все разные папки, вы можете ограничить доступ к общей родительской папке. E. g. как это:

/parent            <-- this folder is protected by .htaccess
/parent/admin1
/parent/admin2
/parent/admin3

Таким образом, вам нужно будет поддерживать только один .htaccess файл.

Другой будет связывать то же самое .htaccess файл во все три папки, используя символические ссылки (если вы работаете в ОС на базе * nix / в Windows, вы можете использовать переходы в NTFS). Но я не уверен, разрешает ли Apache символические ссылки как .htaccess файлы

Да, есть два варианта.

Опция 1)
В каждом каталоге, который вы хотите защитить, должны быть похожие или одинаковые файлы .htaccess, которые ссылаются на один файл .htpassword:

AuthUserFile /etc/httpd/.htpasswd
AuthName "Some Secret FIles"
AuthType Basic
require valid-user

Вариант 2) Создайте символическую ссылку на один файл .htaccess в каждый каталог (это означает, что если вы измените что-либо в своем главном файле .htaccess, все символические ссылки будут обновлены

Короткий ответ: да, вы можете использовать тот же файл .htaccess.

Так работает HTTP-аутентификация. Вы можете просто скопировать один и тот же .htaccess во все три папки, и пользователь сможет просматривать все три папки без повторного запроса пароля. Аутентификация в основном зависит от файла паролей, поскольку файл паролей такой же, все остальное не имеет значения. Он будет работать везде в вашем домене. Таким образом, вы можете использовать тот же файл .htaccess.

Попробуй это:

#####
SetEnvIf Request_URI ^/admin1 auth=1
SetEnvIf Request_URI ^/admin2 auth=1
SetEnvIf Request_URI ^/admin3 auth=1

AuthName "Please login"
AuthType Basic
AuthUserFile /path_to_file_which_contains_user_login_pwd/.htpasswd

## first, allow everybody
Order Allow,Deny
Satisfy any
Allow from all
Require valid-user
# then, deny only if required
Deny from env=auth
#####