htaccess는 기본적으로 상위를 거부하고 단일 정규식 가상 하위 경로를 허용합니다.

htaccess는 기본적으로 상위를 거부하고 단일 정규식 가상 하위 경로를 허용합니다.

기본적으로 모든 익명 사용자를 거부하고 특정 가상 경로에 대해서는 익명 사용자를 허용하고 싶습니다. 가상 경로는 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}후자가 모든 것을 열 수 있는 곳에 추가해야 합니다.

관련 정보