- Есть ли способ заменить: Аутусерфиле с самим паролем? Я уже сгенерировал его в своем PHP-скрипте.
- ИЛИ как я могу сослаться на файл .htpasswd в том же каталоге, в котором он находится. Следующие действия не работают: AuthUserFile './htpasswd'
Вы не можете сделать ни того, ни другого, к сожалению. Аутусерфиле
(т. е. HTTP-аутентификация) требует абсолютного пути к файлу (или относительного пути к Корневой сервер
) и Выражение Apache синтаксис не поддерживается, чтобы сделать этот «динамический» AFAIK (как и с некоторыми другими директивами в Apache 2.4, например. ErrorDocument
).
Однако, поскольку вы создаете каталоги, вы, вероятно, можете создать .htaccess
(?) файл и соответствующий .htpasswd
файлы для каждого каталога? Однако, .htpasswd
файлы должны никогда храниться в каталоге, который они защищают, или даже в общедоступном HTML-пространстве. Они должны храниться вне общего дерева каталогов, над корнем документа. (И, вероятно, вы изначально хотели избежать .htaccess
файлы, хотя с вашим предложения Я не совсем уверен?)
В качестве альтернативы, поскольку вы уже используете PHP для создания этих каталогов, а ваш сценарий PHP уже знает соответствующие пароли, то почему бы не использовать PHP для управления доступом к CSV-файлам?
Например:
Используйте Apache mod_rewrite, чтобы внутренне переписать запрос для любого «защищенного» .csv
файл в PHP-скрипт. Например:
RewriteEngine включен
# Все запросы к файлам ".csv" в дереве каталогов "/foo/" направляются в "/serve-csv.php"
Правило перезаписи ^/?foo/.+\.csv$ /serve-csv.php [L]
PHP-скрипт знает запрашиваемый файл (например. $_SERVER['REQUEST_URI']
) и пользователей/пароли, которым разрешен доступ к этому файлу.
PHP может управлять базовой HTTP-аутентификацией (которая вы, кажется, используете) или реализовать собственный интерфейс аутентификации (HTML-формы и т. д.)
Если пользователь аутентифицирован, PHP читает запрошенный файл и передает его клиенту.