htaccess для исключения URL-адресов из основного авт
Мне нужно исключить один Url (или даже лучше один префикс)из обычной защиты htaccess Basic Auth. Что-то вроде / обратные вызовы / myBank или /вызовы/.* Есть ли у вас советы, как это сделать?
то, что я не ищу, - это как исключить файл. Это должен быть url (так как это решение основано на PHP framework, и все URL-адреса перенаправляются с помощью mod_rewrite для индексирования.РНР.) Так нет файла по этому адресу. Ничего.
некоторые из этих URL-адреса-это просто обратные вызовы от других служб (нет IP не известно, поэтому я не могу исключить на основе IP), и они не могут запрашивать пользователя / пароль.
текущее определение так же просто, как:
AuthName "Please login."
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /xxx/.htpasswd
require valid-user
8 ответов:
если вы используете Apache 2.4, SetEnvIf и mod_rewrite обходные пути больше не нужны, так как
Require
директива способна непосредственно интерпретировать выражения:AuthType Basic AuthName "Please login." AuthUserFile "/xxx/.htpasswd" Require expr %{REQUEST_URI} =~ m#^/callbacks/.*# Require valid-user
Apache 2.4 лечит
Require
директивы,не сгруппировать по<RequireAll>
как будто они были в<RequireAny>
, который ведет себя как "или" заявление. Вот более сложный пример, который демонстрирует сопоставление URI запроса и строки запроса вместе, а затем возвращается требуется действительный пользователь:AuthType Basic AuthName "Please login." AuthUserFile "/xxx/.htpasswd" <RequireAny> <RequireAll> # I'm using the alternate matching form here so I don't have # to escape the /'s in the URL. Require expr %{REQUEST_URI} =~ m#^/callbacks/.*# # You can also match on the query string, which is more # convenient than SetEnvIf. #Require expr %{QUERY_STRING} = 'secret_var=42' </RequireAll> Require valid-user </RequireAny>
этот пример позволит получить доступ к
/callbacks/foo?secret_var=42
но требует имя пользователя и пароль для/callbacks/foo
.помните, что если вы используете
<RequireAll>
Apache будет пытаться соответствовать каждыйRequire
в целях так что подумайте о том, какие условия вы хотите разрешить в первую очередь.ссылка для
используя SetEnvIf, вы можете создать переменную, когда запрос начинается с какого-то пути, а затем использовать
Это решение работает очень хорошо, вам просто нужно определить список, который вы хотите пройти.
SetEnvIfNoCase Request_URI "^/status\.php" noauth AuthType Basic AuthName "Identify yourself" AuthUserFile /path/to/.htpasswd Require valid-user Order Deny,Allow Deny from all Allow from env=noauth Satisfy any
Я пробовал другие решения, но это то, что работал для меня. Надеюсь, это поможет другим.
# Auth stuff AuthName "Authorized personnel only." AuthType Basic AuthUserFile /path/to/your/htpasswd/file SetEnvIf Request_URI "^/index.php/api/*" allow Order allow,deny Require valid-user Allow from env=allow Deny from env=!allow Satisfy any
Это позволит к API URL-адрес и любую строку URL-адрес после
/index.php/api/
чтобы открыть без необходимости входа в систему и что-нибудь еще будет предложено войти.пример:
mywebsite.com/index.php/api
откроется без запроса на логинmywebsite.com/index.php/api/soap/?wsdl=1
откроется без запроса на логинmywebsite.com
будет предложено войти в систему первый
другой подход работает так, если область, которую вы защищаете, имеет монолитный PHP-скрипт, контролирующий все, например Wordpress. Настройка проверки подлинности с помощью в другом каталоге. Поставьте указатель.php там, что устанавливает Куки по пути '/'. Затем в Wordpress (например) проверьте cookie, но обойдите проверку, если $_SERVER['REQUEST_URI'] является исключенным URL.
на моей общей хостинговой платформе RewriteRule не удалось установить переменную среды, которая работала с " Satisfy любой."
при любом подходе следите за тем, чтобы защищаемая страница не включала изображения, таблицы стилей и т. д., который запускает запрос Аутентификации, когда сама страница этого не делает.
<location /> SetEnvIf Request_URI "/callback/.*" 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>
добавьте ниже код в корневой файл htaccess и не забудьте изменить url-адрес администратора, .страницы файл htpasswd.
<Files "admin.php"> AuthName "Cron auth" AuthUserFile E:\wamp\www\mg\.htpasswd AuthType basic Require valid-user </Files>
создать .htpasswd файл в корневой папке и добавить ниже имя пользователя и пароль (установить имя Пользователя по умолчанию: admin и пароль: admin123)
admin:$apr1.nTvE4f$UirPOK.PQqqfghwANLY47.
пожалуйста, дайте мне знать, если вы все еще сталкиваются с любой вопрос.