https 리디렉션과 비밀번호 요구 사항, 오류 문서가 결합된 Apache의 시스템 오류

https 리디렉션과 비밀번호 요구 사항, 오류 문서가 결합된 Apache의 시스템 오류

Apache 2 가상 호스트에는 다음과 같은 구성이 있습니다(제 경우에는 .htaccess문서 루트에 있습니다(단순화를 위해 http:80 및 https:443과 동일함).

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

http 연결을 https로 리디렉션하기 위해

ErrorDocument 500 /error.php
ErrorDocument 404 /error.php
ErrorDocument 403 /error.php
ErrorDocument 402 /error.php
ErrorDocument 401 /error.php

사용자 정의 오류 메시지를 생성합니다. 세 번째 요소는 인증이 필요한 보호된 하위 폴더입니다( .htaccess해당 폴더에 따라).

AuthType Basic
AuthName "Test"
AuthUserFile  /some/path/to/passwords
Require user joe

누군가가 검색을 시도하는 경우를 제외하면 모든 것이 잘 작동합니다 http://example.com/protectedfolder. 실제로 클라이언트는 302 Found다음으로 리디렉션되는 응답을 받습니다.https://example.com/error.php

반면에,

  • https://example.com/protectedfolder401예상대로 사용자 정의(즉, error.php에 의해 생성됨)가 발생합니다 .
  • http://example.com/publicfolder302로 리디렉션 되고 https://example.com/publicfolder으로 301영구 리디렉션되고 https://example.com/publicfolder/마지막으로(DirectoryIndex가 비활성화됨에 따라) 사용자 정의된 403오류가 발생합니다. 예상대로.
  • 또한 예상대로 to 및customized 가 http://example.com/nonexistent발생합니다 .302https://example.com/nonexistent404
  • 구성을 비활성화하면 즉시 원인 ErrorDocument 401에 대한 쿼리가 수행됩니다 . 즉, https로 리디렉션되지 않습니다.http://example.com/protectedfolder401

Apache error.log에는 특정 항목이 없지만 Rewrite 전에 인증 요구 사항이 평가되어 ErrorDocument를 호출하고 여전히 http??이기 때문에 문제가 발생하는 것 같습니다.

원하는 효과를 얻으려면 무엇을 변경해야 합니까? 즉, http://example.com/protectedfolder리디렉션을 발생시키고 https://example.com/protectedfolder리디렉션된 URL만 (맞춤형)을 유발합니까 401?

답변1

에서 ( http로 ) 무조건 리디렉션을 수행하므로https모든 사람이 귀하의 웹사이트에 있는 공개 정보에 접근할 수 있도록 하고 싶다면 좋지 않은 생각입니다., BTW), 그러면 :80및 에 대해 별도의 호스트 항목을 만들고 해당 항목이 빈 폴더와 같은 항목을 :443가리켜 야 합니다 :80. 그러면 mod_auth가 mod_rewrite와 경쟁하지 않게 됩니다.

관련 정보