2012-10-09 15 views
28

以前はプロキシを設定していません。私は共有ホスティングを使用しているので、Apacheディレクティブを設定するには、.htaccessを使用する必要があります。 .htaccessを使って以下のようにすることはできますか?どんな制限?ProxyPassとProxyPassReverseはhtaccessで動作できますか?

ProxyRequests Off 
ProxyPass /img/ http://internal.example.com/img/ 
ProxyPass /app/ http://internal.example.com/app/ 

ProxyPassReverse/http://internal.example.com/ 

答えて

33

You cannot use a ProxyPass in an htaccess file。ドキュメントは、それがコンテキストでのみ適用され言う:

コンテキスト:サーバ設定ファイル、バーチャルホスト、htaccessファイルを(あなたはhtaccessファイルで<Directory>ブロックを持つことはできません)除外ディレクトリ

。ただし、ProxyPassReverseを使用すると、リダイレクトを引き起こすプロキシされた要求のLocationフィールドを内部的に書き換えることができます。 ProxyPassの代わりに、mod_rewriteのPというプロキシフラグを使用するだけです。だから、のようなもの:

RewriteEngine On 
RewriteRule ^/?img/(.*)$ http://internal.example.com/img/$1 [L,P] 
RewriteRule ^/?app/(.*)$ http://internal.example.com/app/$1 [L,P] 

ProxyPassReverse/http://internal.example.com/ 

だけ明確にすること、あなたがhtaccessのファイルにProxyPassまたはProxyPassReverseを使用することはできませんが、Pフラグを利用mod_rewriteのルールでProxyPassReverseを使用することができます。

+0

ブリリアント!それは本当に私がそれを理解するのを助けました。ありがとう! –

+18

htaccessで 'ProxyPassReverse'を使用することはできません(http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassreverse) –

+0

これは機能しますが、内部ページのいずれかを変更して私はブラウザでキャッシュをクリアした後でさえ、それが内部のサーバーに当たるのを見ていません。これは、サーバー上に何かがキャッシュされていることを示唆していますが、これを変更する方法は? – Michael

関連する問題