質問: CentOS+Apacheで以下のドメインを設定しています。 Server1のvirtualhost `http://www.test.com/ https://new-sslhost.com/` Server2のvirtualost `https://sslhost.com` --- 現在以下のindex.htmlの中には以下のような記述があります。 `http://www.test.com/index.html` `` --- これをApacheのmod_Rewriteなどを使い `http://test.com/index.html`を表示した時に 「img src=`https://sslhost.com/image.jpg`」を「img src=`https://new-sslhost.com/image.jpg`」に書き換えたい。 リンクをクリックした時にアドレスバーは`https://sslhost.com`を表示しながら、 実際は`https://new-sslhost.com`を表示させる事は可能でしょうか。
回答: > > リンクをクリックした時にアドレスバーはhttps://sslhost.comを表示しながら、 > > 実際はhttps://new-sslhost.comを表示させる事は可能でしょうか。 > > > アドレスバーに `https://sslhost.com` と表示される場合、ブラウザはServer2に直接アクセスするわけですから、無関係なServer1でどうこうすることはできません。そんなことが容易にできては、フィッシング詐欺に使われてしまうでしょう。 もちろんServer1以外に手を加えれば、そのようなことも可能です。 * クライアントのhostsファイルに `https://sslhost.com` を記載する * `https://sslhsot.com` 宛をServer1に送るプロキシを作り、クライアントに設定する * 自分宛のアクセスをServer1に送るリバースプロキシをServer2に設定する いずれの方法も、正規の通信経路上で改変を行うというのがポイントです。 > > `http://test.com/index.html`を表示した時に「img src=`https://sslhost.com/image.jpg`」を「img src=`https://new-sslhost.com/image.jpg`」に書き換えたい。 > > > これは可能です。が、mod_rewrite はリクエストのURLを内部的に書き換えるモジュールに過ぎず、レスポンスの中身を改変する機能は持ちません。代わりに mod_substitute が使えるのではないでしょうか。 本番環境と開発環境の差を mod_substitute で吸収する - PSI Labs