
私はかなり熱心なプログラマーですが、最近 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.com
www.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 を使用して説明します。