web-dev-qa-db-ja.com

このHTTP認証RewriteRuleは何をしますか?

Google Botが原因でウェブサイトのどこかに書き換え再帰エラーが発生しましたが、ログレベルが低いため、原因となったURLが見つかりません。私はそれを上げましたが、それは今のところ二度と起こりません。

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

これを除いて、すべてのRewriterulesは私には問題なく見え、[L]フラグが付いています。

よくわかりません。オープンソースのショップシステムMagentoからです。

私が知る限り、それは環境変数Eを設定するだけです。しかし、それは非常に愚かな方法ではありませんか?それが目標だった場合、SetEnvを使用するべきではありませんか?

16
The Surrican

この行は、環境変数をユーザー認証文字列の値に設定しています。基本的に、定数値ではなく変数を設定しています。私の知る限り、SetEnvとSetEnvIfでは、環境変数を所定の定数に設定することしかできません。

設定されている変数は、実際にはEではなくHTTP_AUTHORIZATIONです。これは、ユーザー認証プロセスの一部だと思います。

7
Wige

Symfony開発者グループ それに対する良い答えがあります。私は引用します:

ホスティングは、ローカルホストのようにphp5_moduleではなく、fcgiとしてphpを実行しているようです。 (phpinfo-サーバーAPI:CGI/FastCGI)

重要なのは、php5_moduleはHTTP_AUTHORIZATIONヘッダーを自動的に処理しますが、fcgi_moduleは処理しないということです。

解決策は簡単です-ホスティングサーバーの.htaccesに次の行を追加します。

RewriteRule。*-[E = HTTP_AUTHORIZATION:%{HTTP:Authorization}、L]

それは私のために働いた

19
Etienne Marais