Ответ 1
Попробуйте добавить
Allow from env=REDIRECT_noauth
У меня есть базовая проверка подлинности на сервере разработки. Он настраивается внутри моего файла httpd.conf
для VirtualHost веб-сайта. Я должен был настроить его, чтобы исключить определенные каталоги, что не вызвало никаких проблем, и все работает нормально.
Проблема заключалась в исключении URL-адреса, который прошел через мои правила mod_rewrite
в файле .htaccess
. Моя настройка заключается в том, что у меня есть все URL-адреса, проходящие через мой файл index.php
, и оттуда найден и запущен соответствующий код. Я попытался добавить URL-адрес, который я хотел исключить (/businesses/upload_logo
), как я сделал другие, но он все еще требует аутентификации. Это то, что я сейчас имею:
...
<Location />
SetEnvIf Request_URI "/businesses/upload_logo" noauth=1
SetEnvIf Request_URI "/api/.*" noauth=1
AuthType Basic
AuthName "Private"
AuthUserFile ****
Require valid-user
Order deny,allow
Satisfy any
Deny from all
Allow from env=noauth
</Location>
....
Я нашел вопросы, похожие на мои здесь и здесь, но ответы только дают мне то, что Я уже пытаюсь.
Я тоже думал о возможных других решениях, но это будет последнее средство. Я хочу посмотреть, возможно ли, как я это делаю сейчас:
.htaccess
файл
SetEnvIf HOST ...
, но я смотрю, можно ли это исправлять таким образом или не первым.Правило mod_rewrite
:
...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php [L,QSA]
Попробуйте добавить
Allow from env=REDIRECT_noauth
Для меня что-то вроде этого работает как шарм:
<location />
SetEnvIf Request_URI "/businesses/upload_logo" REDIRECT_noauth=1
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/httpd/passwords/passwords
Order Deny,Allow
Satisfy any
Deny from all
Allow from env=REDIRECT_noauth
Require user yournickname
</location>
на основе того, что вы дали, он должен работать, если в вашей конфигурации не существует противоречивой директивы.
Я сделал аналогичную рабочую настройку, просто я использовал путь к файловой системе вместо URI
Я добавляю его здесь, надеясь, что вы можете найти его полезным
<VirtualHost *:8989 >
<IfModule mod_auth_basic.c>
<Directory /var/www/html/vella-8989>
# the auth block
AuthType Basic
AuthName "Please login."
AuthUserFile /var/www/html/vella-8989/.htpasswd
require valid-user
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=noauth
</Directory>
</IfModule>
# set an environtment variable "noauth" if the request has "/callbacks/"
SetEnvIf Request_URI "/callbacks/" noauth=1
ServerName vella.com
ServerSignature off
</VirtualHost>