0

Apacheを使用して、フォルダにHTTPSを強制します。

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "www.example.com"
ErrorDocument 403 https://www.example.com/admin/

そして、ApacheAuthBasicを使用してフォルダを保護します。

AuthType Basic
AuthName "Administration"
AuthUserFile /path/to/my/.htpasswd
Require valid-user
Satisfy all

このように、パスワードは常にHTTPS経由で送信されます。それはうまく機能しますが、それから私は単一のURLの認証を無効にしようとしました:

SetEnvIf Request_URI "crm/index\.php$" removeme_uri
Order deny,allow
Deny from all
Allow from env=removeme_uri
Satisfy any

このURLは認証を要求しませんが、他のURLは認証を要求します。これですべてが順調ですが、HTTPSはもう必要なく、パスワードは明確に送信できます。

私はここで何が間違っているのですか?

4

2 に答える 2

1

Jon の回答のおかげで、さまざまな解決策を試すことができました。私はこの質問を見つけ、私の状況に答えを適用しました:

メイン ディレクトリの .htaccess には、

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "www.example.com"
ErrorDocument 403 https://www.example.com/admin/

AuthType Basic
AuthName "Administration"
AuthUserFile /path/to/my/.htpasswd
Require valid-user
Satisfy all

サブディレクトリのcrm.htaccess には次のものがあります。

<FilesMatch "index\.php">
    Allow from all
    Satisfy any
</FilesMatch>

どのような場合でも SSL を強制し、へのアクセスを許可しますcrm/index.php

于 2012-08-15T21:07:36.563 に答える
0

Satisfyディレクティブはアクセス制限に影響し、SSLRequireSSLSSLRequireは SSL に影響しますが、アクセス制限の一部と見なされるため、これはちょっと奇妙です。したがって、Satisfy Any有効なユーザーを必要とせずに URI へのアクセスを許可するときに使用すると、SSL アクセス要件がその一部になるようにもなりましたAny。また、 のオプションSatisfyは または のいずれAllAnyであるため、「これは常に、これらの他の 2 つは任意」とは言えません。

htaccess ファイルで SSL を強制するには、mod_rewrite などを使用する必要がある場合があります。

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
于 2012-08-12T23:26:06.117 に答える