
기본적으로 모든 익명 사용자를 거부하고 특정 가상 경로에 대해서는 익명 사용자를 허용하고 싶습니다. 가상 경로는 wordpress htaccess + php에 의해 생성됩니다.
현재 설정
AuthUserFile /var/www/domains/dev/.htpasswd
AuthType Basic
AuthName "Password Required"
Require user jackson dawna
Order Deny,Allow
Deny from All
<If "%{REQUEST_URI} =~ m#/sites/dawna/wordpress/wp-json/wp/v2/.*#">
Order Allow,Deny
Allow from All
Satisfy Any
</If>
Satisfy Any
문제
위의 코드는 모든 사용자를 거부하고 자격 증명을 요청합니다. 그러나 전역을 Allow from All
다음 If
으로 전환하면 Deny from All
예상대로 작동하며 지정된 경로만 거부됩니다.
질문
다른 모든 것을 비밀번호로 보호하면서 익명 방문자를 내 가상 경로에 허용하려면 어떻게 해야 합니까?
답변1
요청한 URL 경로가 다음과 같은 경우에만 인증을 요청하면 됩니다.~ 아니다공개 액세스를 허용하려는 URL 경로입니다. 그렇지 않은 경우에는 액세스를 허용하면 됩니다.
또한 Apache 2.4 시스템처럼 보이는 것에 Apache 2.2 인증 지시문을 혼합하고 있습니다.
대신 다음과 같이 시도해 보세요.
<If "%{REQUEST_URI} !~ m#^/this/urlpath/is/public/#">
AuthUserFile /var/www/domains/dev/.htpasswd
AuthType Basic
AuthName "Password Required"
Require user jackson dawna
</If>
위의 내용은 요청한 URL이 시작되지 않는지 확인하고 ( 예제에서는 /this/urlpath/is/public/
문자열 시작 앵커가 누락됨 ) 시작되지 않는 경우에만 인증 메시지를 표시합니다. ^
그러면 기본 작업은 액세스를 허용하는 것입니다(해당 URL 경로로 시작하는 모든 URL에 대해).
답변2
THE_REQUEST
가상 경로(wordpress로 생성됨)의 특성으로 인해 대신 사용해야 했습니다 .
<If "%{THE_REQUEST} =~ m#^GET /sites/dawna/wordpress/wp-json/#">
Allow from All
Satisfy Any
</If>
WordPress 리디렉션에서는 URI가 항상 my if 문을 쓸모없게 만들기 때문에 wordpress/index.php
작동 하지 않았습니다.REQUEST_URI
/path/to/wordpress/index.php
메모
PUT 또는 기타를 지원해야 하는 경우 이를 추가해야 합니다. [A-Z]{3}
또는 [A-Z]{3-6}
후자가 모든 것을 열 수 있는 곳에 추가해야 합니다.