У меня есть разные папки, к которым я хочу запретить доступ. Но я не хочу разделять по разным папкам.
Поскольку у меня есть 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
#####