
Apache 2 vhostでは、次の構成になっています(私の場合、.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
カスタム エラー メッセージを生成します。3 番目の要素は、認証が必要な保護されたサブフォルダーです (.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
予想どおりにカスタム (つまり、error.php によって生成される) につながります401
。http://example.com/publicfolder
302
は にリダイレクトされhttps://example.com/publicfolder
、次に に301
永続的にリダイレクトされhttps://example.com/publicfolder/
、最後に (DirectoryIndex が無効になっているため) カスタマイズされたエラーが発生します403
。予想どおりです。- また、 によって が発生し、カスタマイズされたも予想どおりに
http://example.com/nonexistent
発生します。302
https://example.com/nonexistent
404
- 設定を無効にすると
ErrorDocument 401
、クエリはすぐにhttp://example.com/protectedfolder
発生し401
、https にリダイレクトされることはありません。
Apache error.log には具体的なエントリはありませんが、Auth 要件が Rewrite の前に評価され、ErrorDocument が呼び出され、それが誤って http のままになっているために問題が発生しているようです。
http://example.com/protectedfolder
望ましい効果、つまりへのリダイレクトが発生しhttps://example.com/protectedfolder
、リダイレクトされた URL のみが (カスタマイズされた) を発生さ せるには、何を変更する必要がありますか401
?
答え1
http
から(への無条件リダイレクトを行うためhttps
)誰もがウェブサイト上の公開情報にアクセスできるようにしたい場合は、これは悪い考えです。:80
、BTW) の場合は、とに別々のホスト エントリを作成し:443
、エントリを空のフォルダーなどにポイントする必要があります:80
。そうすれば、mod_auth が mod_rewrite と競合することはなくなります。