mod_rewriteの「RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]」

Apache
スポンサーリンク

仕事で.htaccess見てたら

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

という記述がありました。

どういう意味なのか調べました。

環境変数に、HTTPヘッダーのAuthorizationを代入する

HTTPヘッダーのAuthorizationを環境変数に代入しています。 [E=foo:value]とすると環境変数fooに値valueを入れます。

https://www.suzu6.net/posts/239-laravel-htaccess/

ということらしいです。

HTTP Authorizationヘッダというのは、HTTP通信において
認証を行うための値を格納する場所です。

例の先生の回答

この .htaccess ファイルのセクションは、Apache モジュールである mod_fcgid がインストールされている場合に HTTP 基本認証を正常に機能させるための設定です。

は、mod_fcgid モジュールがロードされている場合にのみこのセクションが実行されるようにします。これは、モジュールがサーバーにインストールされていない場合にエラーが発生するのを防ぐためです。

RewriteCond %{HTTP:Authorization} . は、HTTP リクエストヘッダーに “Authorization” が含まれているかどうかを確認するための条件文です。

RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] は、”Authorization” ヘッダーの内容を環境変数 HTTP_AUTHORIZATION に設定します。これは、PHP スクリプトがこの環境変数を使用して、HTTP 基本認証のユーザー名とパスワードを取得することができるようにするためです。- は、ルールの実行後にリクエストを変更しないことを意味します。

簡単に言えば、このセクションは、mod_fcgid を使用して PHP スクリプトを実行する場合に、HTTP 基本認証を機能させるために必要な設定を行うものです。


かんぺきでござるな。

コメント