web-dev-qa-db-ja.com

特定のURLに対するApache基本認証

変更したいサイトがあります(フランス語から英語に翻訳)。変更された部分はdomain.com/en URLの場所に配置されます。変更中は、この部分のみを基本的なHTTP認証で保護します。

Web認証ルートフォルダーにenディレクトリがあり、このディレクトリに.htaccessファイルがあり、基本認証を実装している場合と同じ動作をしたいと思います。サイトがWordpressで実行され、書き換えルールを使用しているため、Wordpressをバイパスせずにenディレクトリを作成することはできないため、残念ながらこれはできません。

.htaccessの場所でのみ基本認証を有効にするには、ルートディレクトリの/enにどのディレクティブを配置する必要がありますか? <Location /en></Location>ブロックを使用してみましたが、500エラーが発生するため、このブロックはApache構成ファイルでのみサポートされていると思います。

6

わかりました...以下のコードは、コールバックディレクトリでのみ認証を無効にします。おそらく、このロジックを変更して、目的のディレクトリでの認証のみを有効にするか、名前が目的のディレクトリと一致しないすべてのディレクトリで認証を無効にすることができます。守ること。

# set an environment variable "noauth" if the request starts with "/callbacks/"
SetEnvIf Request_URI ^/callbacks/ noauth=1

# the auth block
AuthName "Please login."
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /xxx/.htpasswd

#Here is where we allow/deny
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=noauth
4
user160910

@Gregg_Leventhalは、環境変数を使用して解決策を提供してくれました。しかし、私が使用する論理は、彼の回答で使用されたものとまったく逆です。完全を期すために、URL /enに対してのみ認証を求めるコードを次に示します。

#set an environtment variable "auth" if the request starts with "/en"
SetEnvIf Request_URI ^/en auth=1

AuthName "Please login to access english part"
AuthType Basic
AuthUserFile "/path/to/my/.htpasswd"

# first, allow everybody
Order Allow,Deny
Satisfy any
Allow from all
Require valid-user
# then, deny only if required
Deny from env=auth
8