로컬 .htaccess보다 Apache FilesMatch(글로벌 구성) 우선순위

로컬 .htaccess보다 Apache FilesMatch(글로벌 구성) 우선순위

내 서버의 모든 Wordpress 관리 인터페이스(wp-login.php/wp-admin)를 보호하고 싶습니다. 이를 위해 실제 WordPress 로그인 페이지에 도달하기 전에 고정 사용자/비밀번호(HTTP 기본 인증)를 요청하는 Apache에서 전역 구성을 만들고 싶습니다. 이렇게 하면 비밀번호 검색 봇으로 인한 PHP 과부하를 방지할 수 있습니다.

<FilesMatch "wp-login.php">
 AuthUserFile /etc/wordpress.passwd
 AuthName "TYPE USER wp AND PASSWORD wp"
 AuthType Basic
 require valid-user
</FilesMatch>

작동합니다. wp-login.php라는 파일은 모두 비밀번호를 묻습니다.

하지만 Wordpress 사이트를 실행하면.htaccess전역 구성보다 일종의 "우선 순위"가 있습니다. wp-login.php에 액세스하면 404 오류가 발생합니다. .htaccess를 제거하거나 이름을 바꾸면 FilesMatch가 작동하지만 필요한 "경로 마스크" 기능이 손실됩니다.

WordPress .htaccess는 다음과 같습니다.

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

FilesMatch 지시문이 .htaccess(다시 쓰기 모듈)보다 우선순위가 높은 방법을 찾고 있습니다. URL을 다시 쓰지 말고(404 제공) 비밀번호를 요청하세요.

어떤 아이디어가 있나요?

답변1

해결됨

Wordpress .htaccess는 HTTP 기본 인증, 401 및 403 반환 코드에서 사용되는 ErrorDocument 지시문을 포함하여 모든 것을 다시 작성합니다. ErrorDocument(cPanel 서버의 기본값)에 대한 개인화된 SHTML 파일이 있었습니다. 따라서 비밀번호를 묻는 대신 HTTP 헤더를 다시 작성하여 비밀번호를 묻습니다.그리고동시에 404 오류 페이지를 표시하여 웹 브라우저를 미치게 만듭니다.

문제를 해결하기 위해 기본 ErrorDocument 메시지를 강제로 적용했습니다.

ErrorDocument 401 default
ErrorDocument 403 default

관련 정보