サイトは共有ホスティングにあります。1 つの URL をパスワードで保護する必要があります。
http://www.example.com/pretty/url
明らかに、これは私が保護しようとしている物理ファイル パスではなく、特定の URL にすぎません。
.htaccess を使用した簡単な解決策はありますか?
サイトは共有ホスティングにあります。1 つの URL をパスワードで保護する必要があります。
http://www.example.com/pretty/url
明らかに、これは私が保護しようとしている物理ファイル パスではなく、特定の URL にすぎません。
.htaccess を使用した簡単な解決策はありますか?
Satisfy any
mod_env とディレクティブの組み合わせを使用してこれを行うことができるはずです。を使用して、物理パスでなくてもSetEnvIf
確認できます。Request_URI
次に、変数がAllow
ステートメントで設定されているかどうかを確認できます。したがって、パスワードを使用してログインする必要があるか、パスワードAllow
なしでログインできます。
# Do the regex check against the URI here, if match, set the "require_auth" var
SetEnvIf Request_URI ^/pretty/url require_auth=true
# Auth stuff
AuthUserFile /var/www/htpasswd
AuthName "Password Protected"
AuthType Basic
# Setup a deny/allow
Order Deny,Allow
# Deny from everyone
Deny from all
# except if either of these are satisfied
Satisfy any
# 1. a valid authenticated user
Require valid-user
# or 2. the "require_auth" var is NOT set
Allow from env=!require_auth
<LocationMatch>
これを行うには、または単にディレクティブ<Location>
内で使用できます<VirtualHost>
(httpd.conf / vhost.conf にアクセスできると仮定します。代わりに、サイトをそのように構成する必要がある場合は、ドキュメント ルートの .htaccess に同様のものを配置することもできます)。 .
例えば:
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/blabla
# Other usual vhost configuration here
<Location /pretty/url>
AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
AuthName "Password Protected"
AuthType Basic
require valid-user
</Location>
</VirtualHost>
<LocationMatch>
きれいな URL に対して正規表現を一致させたい場合は、より便利かもしれません。ドキュメントはこちらです。
リックはコメントで、この質問には答えがないと述べているので、私が使用するスニペットは次のとおりです。
AuthName "Protected Area"
AuthType Basic
AuthUserFile /path/to/your/.htpasswd
AuthGroupFile /dev/null
SetEnvIf Request_URI .* noauth
SetEnvIf Request_URI the_uri_you_want_to_protect !noauth
SetEnvIf Request_URI another_uri !noauth
SetEnvIf Request_URI add_as_many_as_you_want !noauth
<RequireAny>
Require env noauth
Require valid-user
</RequireAny>
Apache 2.2 および Apache 2.4 のサポートが必要な場合 (明らかに、両方のバージョンが並行して実行されるセットアップがあります...):
AuthName "Protected Area"
AuthType Basic
AuthUserFile /path/to/your/.htpasswd
AuthGroupFile /dev/null
SetEnvIf Request_URI .* noauth
SetEnvIf Request_URI the_uri_you_want_to_protect !noauth
SetEnvIf Request_URI another_uri !noauth
SetEnvIf Request_URI add_as_many_as_you_want !noauth
<IfModule mod_authz_core.c>
<RequireAny>
Require env noauth
Require valid-user
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
Order Deny,Allow
Deny from all
Satisfy any
Require valid-user
Allow from env=noauth
</IfModule>
Apache 2.2 のコードは、Jon Linから取られています。