は:)のApache 2.2、その後*認証を行う* SSLにリダイレクトする(溶液で<?それはがらくたさ)
年齢古い問題になるので、ここではApacheのための場所であるように思わ:私はHTTP-をリダイレクトどのように>をHTTPSの場合は、HTTPSの場合のみ認証を行いますか?
ああ - と私は
...含める-EDをすることができ、複数の<ディレクトリ>または<場所>ブロックに単一のスニペット、そういない仮想ホストレベルのランダムなパスベースの書き換えで、そのほとんどたいと思いますさて、ここで私はそれが動作するようには思えんしているものです:
をバーチャルホストの上でブロックする
# Set ssl_off environment variable
RewriteEngine on
RewriteCond %{HTTPS} =on
RewriteRule^- [E=ssl]
場所またはディレクトリブロックで
RewriteEngine on
# Case 1 redirect port 80 SSL
RewriteCond %{HTTPS} !=on
RewriteCond %{SERVER_PORT} =80
RewriteRule^https://%{SERVER_NAME}%{REQUEST_URI} [R=301]
AuthType Basic
AuthBasicProvider external
AuthExternal auth_pam
AuthName "My Underpants"
AuthzUnixgroup on
Order Deny,Allow
Deny from all
Allow from env=!ssl
Satisfy any
Require group nice-users
プラス
そのバーのすべてのを必要とするが、それは修正され、それぞれの場所に1行に含めるスニペットファイルに
を抽象化することができます各場所でSSLと認証を一緒に強制するので、間違いの可能性は低くなります。
マイナス
血まみれの地獄、それは直感的ではありません!私が知っているすべてのために壊れやすいかもしれません...
良い方法がありますか?表現した場合、Apacheは、一般的な
<で賢明な設定構文を持っていた場合
コメントはそれがどんな重大な欠陥を持っているかどうかに非常に歓迎されるでしょう:)
別に 人生はそんなに容易になるだろう> </If >
ブロックはどこでも使用できます。 IfModuleなどの特別なケースブロックがあり、RewriteCondのような特別な条件付きの条件があります(それに慣れていないとgrokを実行するのは非常に難しい)。
乾杯、
ティム
VHのSSLと非SSLの管理は不要ですか? – regilero
Apache 2.4への移行が可能な場合は、この問題の解決策があります。http://stackoverflow.com/a/26155051/762028 – Molomby
[Apache .htaccessをHTTPSにリダイレクトしてからユーザー認証を要求する] (https://stackoverflow.com/questions/10267102/apache-htaccess-redirect-to-https-before-asking-for-user-authentication) – LWC