0

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 サイトなどのさまざまなコンテンツのラッパーとして機能するときに、これを行うことの意味をテストする必要があります...私は今、そのいくつかを行うために出発しています。

4

2 に答える 2

0

更新:ヘッダー行を削除して目的のページへのリダイレクトを強制し、代わりに目的のコンテンツを「要求」することで、これを (少なくとも部分的に) 解決したと思います。

于 2013-09-19T18:47:01.920 に答える