
WordPress 사이트를 호스팅하는 Linux 인스턴스가 있고 전체 사이트에 대해 기본 HTTP 인증이 활성화되어 있습니다. 이제 호출할 수 있는 특정 경로에 대해 기본 HTTP 인증을 비활성화하고 싶습니다 /auth-free-url-2019
.
.htaccess
내 첫 번째 생각은 다음과 같이 파일 에 ENV 변수를 설정하는 것이었습니다 .
SetEnvIf REQUEST_URI "^/auth-free-url-2019" allowed_page=1
그런 다음 내 인증에 다음을 추가합니다.
AuthUserFile SOME_AUTH_FILE
AuthName "AUTH NAME"
AuthType Basic
Order deny,allow
Deny from all
Satisfy Any
Require valid-user
Allow from all
이것은 작동하지 않았고 mod_rewrite가 환경 변수와 충돌할 수 있다는 내용을 읽었으므로 <If>
다음과 같이 .htaccess 파일에 지시문을 추가하여 더 간단한 것을 시도하기로 결정했습니다.
<If "%{REQUEST_URI} =~ m#auth-free-url-2019#i">
Order allow,deny
Satisfy Any
Allow from all
Deny from none
</If>
<Else>
Header set Checked-Request-url %{REQUEST_URI}e
AuthUserFile SOME_AUTH_FILE
AuthName "AUTH NAME"
AuthType Basic
Order deny,allow
Deny from all
Satisfy Any
Require valid-user
</Else>
Header set
이 방법도 작동하지 않아서 값을 보기 위해 을 추가했는데 REQUEST_URI
올바른 것 같습니다.
<If>
내가 시도한 지시문 에서
"%{REQUEST_URI} =~ m#auth-free-url-2019#i"
"%{REQUEST_URI} =~ /\/auth-free-url-2019$/i"
"%{REQUEST_URI} =~ /.*auth-free-url-2019.*/i"
"%{REQUEST_URI} == '/auth-free-url-2019'"
"%{REQUEST_URI} == 'auth-free-url-2019'"
"%{REQUEST_URI} == 'auth-free-url-2019'"
"-n %{REQUEST_URI}"
마지막 것만 기본 인증을 해제합니다. 문제가 무엇인지 잘 모르겠지만 어떤 이유로 REQUEST_URI 값과 비교하려는 시도가 작동하지 않습니다. 동일한 지시문 블록을 시도했지만 <If>
HOST_NAME에 대해 작동하는 것 같으므로 REQUEST_URI와 관련이 있습니다.
어떤 도움이라도 주시면 감사하겠습니다.
아파치 2.4.37
RHEL
그리고 여기 내 .htaccess 파일이 있어요
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<If "%{REQUEST_URI} =~ m#auth-free-url-2019#i">
Order allow,deny
Satisfy Any
Allow from all
Deny from none
</If>
<Else>
AuthUserFile SOME_AUTH_FILE
AuthName "AUTH NAME"
AuthType Basic
Order deny,allow
Deny from all
Satisfy Any
Require valid-user
#Allow from all
</Else>
# Exclude the WP CRON and other scripts from authentication
<FilesMatch "(wp-cron.php|another-script.php)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>
# BEGIN W3TC Page Cache core
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} =on
RewriteRule .* - [E=W3TC_SSL:_ssl]
RewriteCond %{SERVER_PORT} =443
RewriteRule .* - [E=W3TC_SSL:_ssl]
RewriteCond %{HTTP:X-Forwarded-Proto} =https [NC]
RewriteRule .* - [E=W3TC_SSL:_ssl]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteRule .* - [E=W3TC_ENC:_gzip]
RewriteCond %{HTTP_COOKIE} w3tc_preview [NC]
RewriteRule .* - [E=W3TC_PREVIEW:_preview]
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP_COOKIE} !(comment_author|wp\-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle) [NC]
RewriteCond "%{DOCUMENT_ROOT}/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index%{ENV:W3TC_SSL}%{ENV:W3TC_PREVIEW}.html%{ENV:W3TC_ENC}" -f
RewriteRule .* "/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index%{ENV:W3TC_SSL}%{ENV:W3TC_PREVIEW}.html%{ENV:W3TC_ENC}" [L]
</IfModule>