あるドメインから別のドメインにmod_rewriteを実行する方法はありますか?ただし、ブラウザーのURLは全体を通して同じに保ちますか?これが私が欲しいものです:
ユーザーがbacon.comのようなものを入力すると、最終的にexample.com/baconになりますが、ブラウザーのURLは常にbacon.comのままです。
基本的には、URLをマスクしながらmod_rewriteを実行したいと思います。想像を絶する例のドメインで申し訳ありませんが、それでもまだ午前10時です...他の多くの回答を確認しましたが、通常、sameドメインでのmod_rewritesは常に関係しています。彼らは、bacon.comがすでにexample.comのServerAliasであるという事実を扱っていません。
これを行う3つの方法を紹介します。
Bacon.comがexample.comのServerAliasである場合、つまり両方が同じサーバー上にある場合、mod_rewriteをまったく使用せずにこれを実行できます。このように考えてください。mod_rewriteは、URLをファイルシステムにマップする最も基本的な方法です。したがって、正しいディレクトリをベースとして使用する別のVirtualHostを設定するだけです。
ここに簡単な例があります:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName example.com
DocumentRoot /www/files
[... all other config you have for example.com]
</VirtualHost>
<VirtualHost *:80>
ServerName bacon.com
DocumentRoot /www/files/bacon
# To have CSS directly under /www/files/css instead of /www/files/bacon/css
Alias /css /www/files/css
[... all other config you have for bacon.com]
</VirtualHost>
ご覧のとおり、これは書き換えではありません。代わりに、example.com/baconのベースディレクトリを独自のDocumentRootとして使用するようにbacon.comを設定しています。
代わりにmod_rewriteを使用したい場合は、mod_rewriteをプロキシとして機能させるPフラグを使用することができます。次に例を示します。
RewriteRule /(.*) http://example.com/bacon/$1 [P]
http://bacon.com/css を http://example.com/css にする代わりに http://example.com/bacon/css 、最初に行き、その特定のURLをキャッチする別のルールを作成します。
RewriteRule /css/(.*) http://example.com/css/$1 [P]
RewriteRule /(.*) http://example.com/bacon/$1 [P]
これを行うには、mod_proxyをロードして有効にする必要があります。ただし、永続的な接続や接続プールを処理しないため、mod_proxyを直接使用する場合に比べてパフォーマンスが低下することに注意してください。したがって、VirtualHostsで希望どおりの操作ができない場合は、3番目の方法をお勧めします。
<VirtualHost *:80>
ServerName bacon.com
ProxyPass http://example.com/bacon
ProxyPassReverse http://example.com/bacon
</VirtualHost>
詳細については、 mod_proxyのドキュメントを参照してください