3

ドメインに htaccess を設定していますが、特定の 1 つの URL を htpasswd で保護しないようにしたいと考えています。その URL は書き換えられた URL であり、実際のディレクトリは関連付けられていません。

ルート htaccess を使用して、特定の 1 つの URL を除いてサイト全体を htpasswd で保護する方法はありますか?

編集(Jon Linの提案を含む私のコードは、私にとってはうまくいきません):

RewriteCond %{SERVER_NAME} =subdomain.example.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
SetEnvIf Request_URI "^/messenger/parse" NOPASSWD=true
AuthUserFile /xxx/xxx/xxx/xxxxxx/subdomain.example.com/.htpasswd
AuthName "Staging Server"
AuthType Basic
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=NOPASSWD
4

1 に答える 1

3

SetEnvIf特定のリクエスト URI に環境変数を設定するなどの設定を行うことができます。次に、認証定義でSatisfy AnyandAllow from envディレクティブを使用して、認証または環境変数 (特定の URI に対してのみ設定される) が存在する場合にアクセスを許可できることを apache に伝えることができます。例:

# set the NOPASSWD variable if the request is for a specific URI
SetEnvIf Request_URI "^/specific/uri/nopasswd/$" NOPASSWD=true

# Auth directives
AuthUserFile /var/www/htpasswd
AuthName "Password Protected"
AuthType Basic
Order Deny,Allow
# Any requirment satisfies
Satisfy any
# Deny all requests
Deny from all
# except if user is authenticated
Require valid-user
# or if NOPASSWD is set
Allow from env=NOPASSWD
于 2012-07-11T18:46:34.143 に答える