Я добавил каталог в общую папку своего сайта и поместил в него следующий файл .htaccess:
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/.htpasswd
AuthGroupFile /
Require valid-user
В .htpasswd
файл существует и имеет допустимое содержание.
В общей папке сайта есть файл .htaccess со следующим правилом перезаписи:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
С этой настройкой мой /protected
папка не защищена.
/protected/.htaccess
файл, а мой /protected
папка не защищена./protected
каталог приводит к запросу пароля, как и ожидалось.Я модифицировал рут .htaccess
переписать правило с тем, что я должен предотвратить mod_rewrite
от попытки переписать запросы на мой /protected
папка, как показано ниже:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/protected
RewriteRule . index.php
Но это вроде не подействовало:
/index.php
вместо запроса подробностей аутентификации, как ожидалось/protected
папка не защищенаЕсть index.php
файл внутри моей защищенной папки (/protected/index.php
) со следующим содержанием:
die('protected');
Может ли кто-нибудь увидеть проблему с таким подходом, или с моими модификациями рута .htaccess
переписать правило?
Facepalm!
Мои условия перезаписи делать работает как положено, проблема была в моем /protected/.htaccess
файл:
Для базовой аутентификации сервер записывает заголовок «401 Unauthorized», а затем ищет документ об ошибке на основе заранее определенного пути. В большинстве случаев документ об ошибке не существует в каталоге, который вы хотите защитить, поэтому запрос обрабатывается механизмом перезаписи, который выдает ошибку 404.
Решение заключалось в том, чтобы добавить в /protected/.htaccess
файлы:
ErrorDocument 401 "Unauthorized Access"
RewriteEngine off
... Authorisation lines
Из Конфликт между перезаписью URL-адресов Apache и базовой аутентификацией.
Старый вопрос, но у меня возникла эта проблема. Вы также можете установить ошибку 401 в основном файле .htaccess, если вы не хотите или не можете редактировать защищенный .htaccess и у вас еще нет набора документов с ошибкой 401.