複数のドメインが同じウェブサイトを指す

複数のドメインが同じウェブサイトを指す

私はかなり熱心なプログラマーですが、最近 Web 開発に移行したので、この質問が少々ばかげているようであればお詫びします。

複数のドメインをサポートする e コマース Web アプリを構築しています。アプリで 2 つのストアが稼働していて、それぞれに独自のカスタム ドメインがあるとします。

アプリは次の場所にあります:www.main-app.com
ストア 1 は次の場所にあります:www.store1.com
ストア 2 は次の場所にあります:www.store2.com

store1.comで行われたすべてのリクエストを、ストア ID である ID を渡しstore2.comてリダイレクトする必要がありますmain-app.com。ストア ID は、各ストアのすべてのコンポーネントを読み込むために使用されます。

を指す CNAME レコードを store1 と store2 に追加できましたwww.main-app.com。 これまでのところは順調で、www.store1.comブラウザに入力するとメイン アプリが画面に表示されますが、どのストアを読み込むかを認識できるようにストア ID を渡すにはどうすればよいですか?

この機能を実現するための最善のアプローチはどれでしょうか?

本質的には、 と入力してwww.store1.com、 store1 をロードする要求を受け取りたいのです。 と入力して、ユーザーを のようなものにリダイレクトするようなwww.main-app.comドメイン転送は使いたくありません。www.store1.comwww.main-app.com?storeId=1

私の言いたいことが明確に伝われば幸いです。

答え1

ウェブブラウザはHostヘッダウェブ アプリケーションへの各リクエストに添付されます。このヘッダーには、サイトへのアクセスに使用されるドメインが含まれます。このヘッダーを使用すると、ユーザーがアクセスに使用しているドメインに基づいて、サイトの外観を変更できます。

答え2

任意の数のレコードが同じサーバーを指すことができ、サーバーはすべてのドメインからのリクエストを受け取ることになります。通常、これは 1 つの Web サーバーを使用して複数のドメインをホストするために使用されます。HTTP 1.1 以降、サーバーはリクエストがどのドメインに対するものかを認識します。HTTP 1.1 では、リクエストされたホスト名のフィールドがヘッダーに追加されました。

Apache では、複数のドメインをホストする場合、VirtualHost を作成し、通常は各ドメインにファイルの場所へのパスを指定します。ただし、説明されているように、ストアごとに仮想ホストを作成し、すべてのルート フォルダーをメイン アプリのファイルがある同じパスに設定します。

アプリケーション自体では、すべてのリクエストに、リクエストの対象となるホストを示すフィールドが含まれるため、ID は必要ありません。これにより、ストア間で異なるデータをインデックス化できます。この場合、リダイレクトする必要はありません。

ApacheはRewriteRuleを使用してプロセスを自動化することができます。書き換えインストールされ、有効になっています。 要求されたドメインに応じて異なるパラメータでページを呼び出すように指示します。 たとえば、提案されたようにすべての要求に storeId を追加し、その storeId を使用してロジックを駆動するように指示できます。 他の Web サーバーにも同等のものがある可能性がありますが、ここでは最もよく知っている Apache を使用して説明します。

関連情報