VirtualDocumentRootとか

( Apache )

Apacheの設定をいじる機会がありましていろいろしることできたのでメモ。 あと考え方もちょびちょび。

・ドメインが「sub.domain.jp」でアクセスしてきた場合、「sub」部分が動的にいろいろな形でアクセスできるようにします。つまり、FQDNごとにアクセス先を違うディレクトリで分けるようにします。

このとき利用する方法としてVirtualDocumentRootの設定をします。

それが以下の設定。

# ディレクトリティブの設定

    Options -Indexes -MultiViews +ExecCGI -Includes
    AllowOverride All
    FileETag None

# すべてからのホストに対しての設定

    ServerName   %0
    VirtualDocumentRoot /home/web/%0/public_html

これによりFQDN毎にディレクトリでわけておくとその時点でディレクトリのみ見に行くようになります。 一つのドメインが追加していくごとに設定書いていくのなんてめんどくさいですもんね。 これができると楽なんだなぁと思いました。

ちなみに「%0」はFQDNの意味合いをもっているそう。あとは以下の設定項目をいろいろやれば ドメインにURIにあわせてディレクトリ構成もいろいろできるようになるんだな。

%% insert a % %p insert the port number of the virtual host %N.M insert (part of) the name

0 the whole name 1 the first part 2 the second part -1 the last part -2 the penultimate part 2+ the second and all subsequent parts -2+ the penultimate and all preceding parts 1+ and -1+ the same as 0

あとディレクティブの設定は別々にディレクトリを分けたのはいいけれど、時には ある特定の条件の時には共通の処理をしたいわがままなときがあるかもしれないような気がします。。。 そのときは指定されたディレクトリ以下をアクセスできるように設定をしてから。「VirtualHost」内で そのプログラムを実行できるようにします。

# ディレクトリティブの設定

    Options -Indexes -MultiViews +ExecCGI -Includes
    AllowOverride All
    FileETag None

# すべてからのホストに対しての設定

    ServerName   %0
    VirtualDocumentRoot /home/web/%0/public_html

    RewriteEngine On
    RewriteRule /path/to/       /var/www/test/public/index.php

こうすると指定のパスの場合だけすべて共通で「index.php」が実行されるようになる。

Apacheって便利だねー。こんなこともできるなんて最近しりますた。

DocumentRoot VirtualHost 大量バーチャルホストの設定

/a>