3

CodeIgniterでサイトを作成しようとしています。このサーバーから複数のドメインを提供します。私がやろうとしているのは、www.example1.comのHTTPリクエストをwww.example2.comのHTTPリクエストから分離し、それらを正しいアプリケーションフォルダーにリダイレクトすることです。

これが私のディレクトリ構造だとしましょう:

  • システム
    • 応用
      • 例1
      • example2

したがって、このリクエスト

www.example1.com/gallery/

その後、exmaple1フォルダにリダイレクトされます。

誰かがこれを行うためのコード例を持っていますか?明らかに、ReWriteモジュールを使用する必要があります...

Apacheのドキュメントを見回しましたが、どこにも行きませんでした。これについてさらに情報が必要な場合はお知らせください。

4

3 に答える 3

3

www.example1.comとwww.exaplme2.comがそれぞれファイルシステム内の異なるフォルダを指すようにするために必要なのはVirtualHostと呼ばれます。

さらに、メインコンテンツを提供するためにURIに別のパスを設定したい場合は、さまざまな選択肢があります。

  1. フォルダを物理的に作成し、それ以上変更しないでください

  2. フォルダへのリンク(メインの仮想ホストルートフォルダを指す名前付きギャラリー)を物理的に作成し、VirtualHostのFollowSymLinksオプションを使用します

  3. VirtualHostでAliasディレクティブを使用する

    Alias /gallery /
    
  4. mod_rewriteを使用する

    RewriteRule /gallery/(.*) /$1 [QSA]
    

最も単純な(CodeIgniterが許可する)のは、オプション1または2です。

VirtualHostドキュメントからの抜粋:

単一のIPアドレスで複数の名前ベースのWebサイトを実行します。

サーバーには単一のIPアドレスと複数のエイリアス(CNAMES)があります
DNSでこのマシンをポイントします。あなたはのためのウェブサーバーを実行したい
このマシンのwww.example.comとwww.example.org。

ノート

Apacheサーバーで仮想ホスト構成を作成すると
それらのホストに対してDNSエントリを魔法のように作成させない
名前。あなたはあなたのIPに解決するDNSに名前を持っている必要があります
アドレス、または他の誰もあなたのウェブサイトを見ることができなくなります。
ローカルテスト用にhostsファイルにエントリを入れることができます。
しかし、それはそれらのホストを備えたマシンからのみ機能します
エントリ。

サーバー構成

#Apacheがポート80でリッスンしていることを確認します
80を聞く

#すべてのIPアドレスで仮想ホスト要求をリッスンする
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot / www / example1
サーバー名www.example.com

#ここに他のディレクティブ

</ VirtualHost>

<VirtualHost *:80>
DocumentRoot / www / example2
ServerName www.example.org

#ここに他のディレクティブ

</ VirtualHost>

アスタリスクはすべてのアドレスに一致するため、メインサーバーはリクエストを処理しません。
www.example.comが構成ファイルの最初にあるため、
優先度が最も高く、デフォルトまたはプライマリと見なすことができます
サーバ。つまり、一致しないリクエストを受信した場合
指定されたServerNameディレクティブの1つであり、これによって提供されます
最初のVirtualHost。
于 2009-06-22T05:47:10.030 に答える
1

これは本当に2つの質問です:

  1. www.example1.comとwww.example2.comを異なるものにする方法は?これに対する答えは、 VirtualHostディレクティブです。

  2. / galleryがexample1を指すようにするにはどうすればよいですか?これは、Aliasディレクティブを使用して行われます。

于 2009-06-22T05:45:53.183 に答える
1

VirtualHost (および Alias、Rewrite) を使用することが主な答えですが、同じセットアップを使用して他のホストを追加/削除すると思われる場合は、mod_macroモジュールを検討します。これは、Apache の構成を簡素化し、コピー/貼り付けエラーを回避するのに役立つサード パーティ製のモジュールです。

レイアウトの簡単な例として、次を定義します。

<Macro vh80 name>
 <VirtualHost *:80>
   DocumentRoot /system/application/$name
   ServerName www.$name.com
   CustomLog /system/application/$name/logs/access.log virtcommon
   ErrorLog /system/application/$name/logs/error.log
 </VirtualHost>
</Macro>

次に、サイトを有効にするときに、次のディレクティブを使用します。

vh80 の使用例1

www.example1.com をセットアップして、構成されたディレクトリをルートとして使用し、構成されたログ ディレクトリも使用します。

于 2009-06-22T14:10:01.753 に答える