0

CakePHP アプリケーションがあり、httpd.conf に次のディレクティブがあります。

ProxyRequests off
ProxyPass /forum/ http://somesite.com/phpbb3
ProxyPass /gallery/ http://someothersite.com/gallery3
<Location /forum/>
        ProxyPassReverse /
</Location>
<Location /gallery/>
        ProxyPassReverse /
</Location>

CakePHP がなくても、これは問題なく動作します。ただし、CakePHP は routes.php やその他のソースからの独自のリダイレクト ロジックを使用しているため、プロキシ設定をオーバーライドしているように見えるため、サーバー上の「/community」への呼び出しは、 CommunityController と呼ばれるコントローラー。

ここでの私の問題は、複数のアプリケーションを提供する 1 つのサーバーを持ちたいが、それをユーザーに対してシームレスに保ちたいということです。そのため、完全な PHPBB アプリケーションは、たとえば「/forum」ディレクトリ内で、CakePHP のコントローラーであるかのように実行できます。

誰かがこれを以前に行ったことがありますか?それは可能ですか? mod_rewriteand/or routes.php ファイルがディレクティブをオーバーライドするのはなぜmod_proxyですか??

4

1 に答える 1

1

おそらく、mod_proxy を使用する代わりに、mod_rewrite を使用して、 (proxy) フラグと(最後のルール) フラグを組み合わせたRewriteRuleディレクティブを作成できます。[P][L]

'proxy|P' (強制プロキシ):

このフラグは、置換部分がプロキシ リクエストとして内部的に送信され、すぐに (書き換え処理はここで停止します) プロキシ モジュールを通過するように強制します。置換文字列が、Apache プロキシ モジュールで処理できる有効な URI (通常はhttp://hostnameで始まる) であることを確認する必要があり ます。そうでない場合、プロキシ モジュールからエラーが発生します。このフラグを使用して、ProxyPass ディレクティブのより強力な実装を実現し、リモート コンテンツをローカル サーバーの名前空間にマップします。

注: このフラグを使用するには、mod_proxy を有効にする必要があります。

'last|L' (最後のルール):

ここで書き換えプロセスを停止し、これ以上書き換えルールを適用しないでください。これは、Perl の last コマンドまたは C の break コマンドに対応します。このフラグを使用して、現在書き換えられている URL が次の規則によってさらに書き換えられるのを防ぎます。たとえば、これを使用してルートパス URL (「/」) を実際の URL (「/e/www/」など) に書き換えます。

于 2009-10-28T21:01:35.383 に答える