URLを変更せずに、サーバーの同じディレクトリを指す2つのドメイン間で転送する
私は持っdomain1.com
ていdomain2.com
ます。
domain1.com
は、123.123.123.123
ディレクトリを正確に指すサーバーIPを指すメインドメインですpublic_html
。
domain2.com
domain1.com
ユーザーのブラウザでURLを変更せずに転送したいドメインです。(注:このドメインはユーザープロファイルのドメインになります)。
だから、代わりにタイピングのdomain1.com/users/John
、私が入力しますdomain2.com
。
domain2.com
()の同じIPアドレス123.123.123.123
と同じディレクトリを指します。domain1.com
public_html
私は指摘domain2.com
のhtaccessファイルからそれをアクセスするために、同じサーバとディレクトリにdomain1.com
。
だから、私は、以下の試した.htaccess
のpublic_html
。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2.com
RewriteRule ^(.*) https://domain1.sa/users/John/$1 [P]
しかし、これは500エラーhttpコードを返しています!
注:私は専用サーバーを持っています。
回答
RewriteEngine On RewriteCond %{HTTP_HOST} ^domain2.com RewriteRule ^(.*) https://domain1.sa/users/John/$1 [P]
mod_proxyまたはmod_rewriteが正しくインストールまたは構成されていない限り、これが500エラーになる理由は明らかではありませんか?または、おそらく他のディレクティブと競合していますか?エラーの詳細については、エラーログを確認する必要があります。
ただし、2つのドメインが同じサーバー/ディレクトリを指しdomain2.com
、ブラウザのアドレスバーに(元のURL)を保持したい場合は、リクエストをプロキシする必要はありません(ここで実行しようとしているように)。必要なのは、(同じドメインでの)より単純な内部書き換えだけのようです。例えば:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2\.com
RewriteRule !^users /users/John%{REQUEST_URI} [L]
正規表現!^users
は、書き換えループを回避することです(これは、ブラウザーで500エラーとしても現れます)。
だから、代わりにタイピングの
domain1.com/users/John
、私が入力しますdomain2.com
。
ただし、上記では、ここで述べたように(末尾のスラッシュなしで/users/John/
)ではなく、/users/John
(末尾のスラッシュ付きで)リクエストが送信されることに注意してください-それは問題ですか?
そして、あなたはから書き直したいと思っている/<something>
と/users/John/<something>
あなたが投稿コードサンプルあたりとして- ?これはあなたの質問テキストには記載されていませんが?ドメイン自体のリクエストのみを書き換えたい場合、つまり。domain2.com/
そうでなけれdomain2.com/<something>
ば、上記はさらに単純化することができます。例えば:
RewriteCond %{HTTP_HOST} ^domain2\.com
RewriteRule ^$ /users/John [L]