Apache の SetHandler を使用して、PHP 認証スクリプト (Apache 2.2.15、PHP 5.3.3) を介してすべてのコンテンツ要求を強制すると、無限ループの問題が発生します。
私の目標は、サイト内のコンテンツにアクセスしようとしているユーザーを PHP 認証ラッパーに検証させることです。したがって、/securesite/securefile.html または /securesite/securefile.png (たとえば) に対するすべての要求は、ラッパーがターゲット ファイルにリダイレクトする前に、PHP ラッパーを介して送信されます。
これはApacheの設定です:
DocumentRoot /data/www/default
Action VerifyAuth /_auth/authenticate_test.php
<Directory "/data/www/default/securesite">
SetHandler VerifyAuth
Order allow,deny
Allow from all
</Directory>
/data/www/default/_auth で認証 PHP スクリプトをテストします):
<?php
header("Location: ".$_SERVER['REQUEST_URI']);
exit;
?>
テスト ターゲット ファイルは単純な html ファイル (/securesite/securefile.html) です。
<html><body>index.html</body></html>
実際の認証スクリプトにはさらに深い部分がありますが、トラブルシューティングを行う際に、この問題を最も単純な形式に分解しようとしています。
「php_value auto_prepend_file /data/www/default/_auth/authenticate_test.php」を使用しようとしましたが、サイト内のページを更新するときに問題が発生していました。
このアプローチを使用すると、ループが作成され、ブラウザーでエラーが発生します。Apache のアクセス ログには、ターゲット ページへのリダイレクト試行が「GET /securesite/securefile.html HTTP/1.1 302」として示されます。
このループの原因と修正方法に関するアイデアはありますか? ありがとう。
更新:ヘッダー行を削除して目的のページへのリダイレクトを強制し、代わりに目的のコンテンツを「要求」することで、これを (少なくとも部分的に) 解決したと思います。
<?php
require($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI']);
exit;
?>
SVN サイトなどのさまざまなコンテンツのラッパーとして機能するときに、これを行うことの意味をテストする必要があります...私は今、そのいくつかを行うために出発しています。