<-
Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.5 > Rewrite

mod_rewrite によるプロキシ

翻訳済み言語:  de  |  en  |  es  |  fr  |  ja  |  ko  |  tr  |  zh-cn 

このドキュメントは mod_rewrite リファレンスドキュメントを補足するものです。 RewriteRule の [P] フラグを使用して他のサーバにコンテンツをプロキシする方法を 説明します。一般的なシナリオを説明するレシピがいくつか提供されています。

参照

top

mod_rewrite によるコンテンツのプロキシ

説明:

mod_rewrite は [P] フラグを提供しており、URL を mod_proxy 経由で他のサーバに渡すことができます。ここでは 2 つの例を示します。1 つ目の例では、URL を直接別のサーバに渡し、 ローカル URL であるかのように提供します。もう 1 つの例では、 見つからないコンテンツをバックエンドサーバにプロキシします。

解決方法:

単純に URL を別のサーバにマッピングするには、次のように [P] フラグを使用します:

RewriteEngine  on
RewriteBase    "/products/"
RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"

2 つ目の例では、リソースがローカルに見つからない場合にのみ リクエストをプロキシします。これは、あるサーバから別のサーバに 移行中で、すべてのコンテンツが移行済みかどうかわからない場合に 非常に便利です。

RewriteCond "%{REQUEST_FILENAME}"       !-f
RewriteCond "%{REQUEST_FILENAME}"       !-d
RewriteRule "^/(.*)"                    "http://old.example.com/$1" [P]
ProxyPassReverse "/" "http://old.example.com/"
議論:

どちらの場合も、バックエンドから発行されるリダイレクトが 正しくクライアントに渡されるように ProxyPassReverse ディレクティブを 追加しています。

可能な限り mod_rewrite よりも ProxyPassProxyPassMatch の使用を検討してください。

翻訳済み言語:  de  |  en  |  es  |  fr  |  ja  |  ko  |  tr  |  zh-cn