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