mi сайт имеет apache-авторизацию, но мне нужно разрешить доступ к определенному URL-запросу.Этот URL-запрос не представляет существующий файл или каталог.
Это мой .htaccess:
Сначала я попробовал этот подход:
AuthName "Required login"
AuthType Basic
AuthUserFile C:\path\to\apache\.htpasswd
Require expr %{REQUEST_URI} =~ ^specialUrl$
Require valid-user
Это дает мне внутреннюю ошибку сервера 500
Я пытался:
%{REQUEST_URI} == ^specialUrl$
"%{REQUEST_URI} =~ ^specialUrl$"
Я не уверен, как выражение должно быть оценено.Я предполагаю, что у меня есть синтаксическая ошибка.
Второй подход:
Как я видел на этот другой ответ Я попытался установить переменную env
## Grant access to webhook uri
SetEnvIf Request_URI ^/specialUri noauth=1
## Auth config
AuthName "Required login"
AuthType Basic
AuthUserFile C:\path\to\apache\.htpasswd
Require valid-user
## Allow Deny
Order Deny,Allow
Satisfy any
Deny from all
Allow from env=noauth
Это привело к ошибке 401 Аутентификация требуется, когда я POST с http-клиента.
Требуется аутентификация!
Этот сервер не может проверить, что вы авторизованы дляполучить доступ к URL-адресу "/ specialUri".Вы либо ввели неверные учетные данные (например, неверный пароль), либо ваш браузер не понимает, как предоставить требуемые учетные данные.
Если вам разрешено запрашивать документ, проверьте свой идентификатор пользователя и пароль и повторите попытку.
.htaccess файл:
## Grant access to webhook uri
SetEnvIf Request_URI "\specialUri" noauth
## Auth config
AuthName "Required login"
AuthType Basic
AuthUserFile C:\path\to\.htpasswd
## Allow Deny
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=noauth
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
</IfModule>