Apache: ホスト名に基づいてスクリプトをロードする

Apache: ホスト名に基づいてスクリプトをロードする

それほど複雑ではないと思いますが、最善の方法を見つけるのに苦労しています。

にサイトがあり、site.example.comその下に 5 つのページがあります。これらの 5つのページは であるとしますsite.othersite.com/page1.html, page2.html, page3.html, page4.html, page5.html。また、他に 5 つのサブドメイン もあります。lp1.OTHERSITE.com, lp2.othersite.com, lp3.othersite.com, lp4.othersite.com, lp5.othersite.comこれらのドメインはすべて、同じサーバーの同じドキュメント ルートでホストされています。ここで、Apache に次のパターンへの透過的なリダイレクト (つまり、アドレス バーが変更されない) を行わせる必要があります。

lp1.othersite.com --> site.example.com/page1.html
lp2.othersite.com --> site.example.com/page2.html
lp3.othersite.com --> site.example.com/page3.html
lp4.othersite.com --> site.example.com/page4.html
lp5.othersite.com --> site.example.com/page5.html

これは Apache のみを使用して可能ですか? そうでない場合、受信ホスト名に基づいて iframe に site.example.com/page*.html ページをロードする PHP スクリプトを既に作成していますが、その PHP スクリプトに 5 つの lp*.othersite.com ドメインを送信するように Apache に指示する方法がわかりません。

プロジェクトの説明が十分できていれば幸いです。基本的には、アドレス バーのアドレスを変更せずに、lp* サブドメインをそれぞれ別の site.example.com/page*.html ページにリダイレクトする必要があります。

ヒントやアドバイスをいただければ幸いです。私が実現できたのは、Apache がそれらの URL を PHP スクリプトにリダイレクトすることだけでした。しかし、リダイレクトだったため、アドレス バーも変更されました (その時点では、ホスト名が変更されたため、PHP スクリプトは機能しませんでした)

答え1

同じ を使用して各ホスト名に仮想ホストを設定しますDocumentRootが、次のようにします。

DirectoryIndex page1.html

lp1の場合、

DirectoryIndex page2.html

lp2 などの場合、それらのページが の代わりにデフォルト ページとして使用されるようになりますindex.html

したがって、eg はhttp://lp3.othersite.com/を提供しますpage3.html。また、などへの移動も可能になりますhttp://lp3.othersite.com/page1.htmlが、デフォルトのページはDirectoryIndexディレクティブで指定したものになります。

答え2

何か見落としているかもしれませんが、あなたが求めているのは仮想ホストだけだと思います。参考:

仮想ホストでは、同じ Web サーバーに設定された複数の DNS エントリが必要です。Apache は、使用される DNS 名に基づいて指定されたページを提供します。リダイレクトしない限り、ユーザーは入力した内容を見ることになります。

答え3

URL Rewrite を使用すると、これを実行できます。簡単な即席の例を示します (機能するかどうかはわかりません)。

RewriteCond %{HTTP_HOST} ^lp([0-9]).othersite.com [NC] 
RewriteRule ^(.*)$ page$1.html [NC,QSA] 

答え4

フォローするApache 仮想ホストのドキュメントVirtualHost各FQDNを設定するには、mod_dir設定しDirectoryIndex、リダイレクトに使用するモジュールリライト

チュートリアル:

Apache と Nginx で一時的および永続的なリダイレクトを作成する方法

関連情報