web-dev-qa-db-ja.com

ランダム化されたホスト名でマルチサイトネットワークを設定するにはどうすればいいですか?

新しくインストールした機能的なWordPressをマルチサイトネットワークに変換しようとしています。しかし、私はApacheの設定が原因で問題を抱えています。

Apacheを使用して、domain.comに対する要求を2つのアプリケーションサーバーのうちの1つ、app1.domain.comまたはapp2.domain.comにランダムにリダイレクトします。問題は、現在のブラウザドメインがそれと異なる場合、WordPressがDOMAIN_CURRENT_SITE(wp-config.phpで定義)にリダイレクトすることです。これにより、310リダイレクトループが発生します。これは何が起こるかの例です:

  1. ユーザー要求domain.com/apps/wordpress/
  2. Apacheはapp1.domain.com/apps/wordpress /にリダイレクトします
  3. リダイレクトドメインはDOMAIN_CURRENT_SITEと一致しないため、WordPressはDOMAIN_CURRENT_SITE(domain.com/apps/wordpress/)にリダイレクトします。
  4. 手順1に戻って繰り返す

私がやりたいのは、すべてのWordPressリンクとURLをdomain.comに設定し、WordPressにapp1.domain.comという事実を無視させることです。またはapp2.domain.comは実際に取得されています。これは可能ですか?

よくわからない場合のために、関連するApache confファイル(単純化されたもの)を次に示します。

application_servers.conf:

domain.com-prod-http  app1.domain.com:80|app2.domain.com:80

httpd.conf:

RewriteMap server rnd:conf/application_servers.conf
RewriteRule ^/apps/*([^/]*)/*(.*) http://${server:domain.com-prod-http}/apps/$1/$2 [P,L,QSA]
1
Zac

数日間これに頭をぶつけた後、私はうまくいく解決策を見つけました。

以下をwp-config.phpに追加するだけです。

if ( isset( $_SERVER['HTTP_X_FORWARDED_Host'] ) ) {
    $_SERVER['HTTP_Host'] = $_SERVER['HTTP_X_FORWARDED_Host'];
}

これにより、WordPressはプロキシドメインではなく、要求されたドメインを使用するようになります。

1
Zac