|  | 
httpd.conf の DocumentRoot は、一つしか設定できませんが、サーバシステムを構築し
ていくとどうしても別の DocumentRoot( ホームディレクトリ ) を使ってホームページを表示したい事があると思います。そんな時には、Alias を使うと簡単に別の DocumentRoot を使用してホームページを表示
 することが可能になります。専門用語では、「 仮想ディレクトリとマッピング 」といいます。
 
 ※ 注意事項 ※
 1.  httpd.conf の DocumentRoot のユーザー名と別の DocumentRoot の所有者名は、同一に 設定してください。
 2. SELinux 有効の時には、下記のポリシーを設定します。
 下記ポリシーを設定しないと Apache から、ホームディレクトリ( 別ドキュメントルート )での 公開が出来なくなります。
 
 | 
|  | 
setsebool -P httpd_enable_homedirs 1;\firewall-cmd --reload
 | 
|  | 
httpd.conf では、デフォルトで ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
 が設定されていますが、ScriptAlias は、CGI 専用のため html には対応しない為、
 コメントアウトしておきます。ついでに下記もコメントアウトしておきます。
 
 <Directory "/usr/local/apache2/cgi-bin">
 AllowOverride None
 Options None
 Require all granted
 </Directory>
 
 | 
|  | 
                Alias の動作を私のサーバ機を例として紹介します | 
|  | 
私のサーバ機の DocumentRoot は、/var/html/www/www.smiyasaka.com です。別の DocumentRoot として /home/miyasaka/www も作成しています。
 
 通常、インターネットで www.smiyasaka.com/○○○○ をアクセスすると 
DocumentRoot で設定されているディレクトリ以下にある該当ページが表示されます。
 
 しかし Alias で Alias "/abcd" "/home/miyasaka/www" と設定したとすると
www.smiyasaka.com/abcd/test_page.html とアクセスした場合
、/home/miyasaka/www/ 以下にある test_page.html が表示されるようになります。
 
 ① Alias の編集箇所
 
 ログの設定の下の方 <IfModule alias_module>~ </IfModule> 内にあります。
 
 ② Alias の設定方法
 
 Alias "/(仮想ディレクトリ)" "/(実のディレクトリパス)" です。
 
 例.  Alias "/betsu-dir" "/home/miyasaka/www"
 
 /betsu-dir/○○○○ ----> /home/miyasaka/www/○○○○ に URL が変換(マッピング) されます。
 (仮想ディレクトリ)は、存在しないディレクトリでも良いです。
 (実のディレクトリパス)は、変換後のディレクトリをフルパスで記述します。
 
 ③ CGI, SSI を使用したい時の設定
 
 Alias /(仮想ディレクトリ)/ "/(実のディレクトリパス)/" の直下に下記設定を追加します。
 さらに CGI, SSI 使用許可と perl の拡張子 .cgi, .pl の拡張子が使用できるように設定します。
 
 <Directory "/(実のディレクトリパス)">
 AllowOverride None  <----- [.htaccess]の使用不可
 Options Includes FollowSymLinks ExecCGI  <----- SSI, CGI を使用と
 シンボリックリンクを許可
 Order allow,deny <----- アクセス許可を優先させる
 Allow from all  <----- 上との2行ですべてのアクセスを許可
 AddHandler cgi-script .cgi .pl  <----- cgi-script の拡張子 .cgi .pl を
 使用許可
 Require all granted  <----- すべてのアクセスを許可
 </Directory>
 
 | 
|  |  | 
|  | 
   *******   Apache のディレクティブの解説    *******
 Includes       <----- SSI の使用を許可
 FollowSymLinks    <----- シンボリックリンク先の参照を許可
 ExecCGI       <----- CGI プログラムの使用を許可
 allow          <----- 指定したホスト(IPアドレス)からのアクセスを許可
 deny           <----- 指定したホスト(IPアドレス)からのアクセスを禁止
 Require all granted   <-----「すべてのアクセスを許可」
 
 ※※ 注意事項 ※※
 
 allow, deny を使わずに 2.4系 から、この様に記述するようになっています。
 
 つまり、全部許す( すべてのアクセスを許可 )ということなら、
 
 Order Allow,Deny
 Allow from all
 
 ではなく、
 
 Require all granted
 
 と書く必要があります。
 こう書かないと、アクセスした時に下記の様に 403 Forbidden
 
 You don't have permission to access ○○○○○○ on this server.
 ( ○○○○○○は、アクセスしたファイルのアクセス権が無い )
 
 になります。
 
 | 
|  |  | 
|  | 
      私の場合は、下記のようになります。
 # Alias /webpath /full/filesystem/path
 Alias "/home" "/home/miyasaka/www"
 # .cgi .pl を有効にする。ここに書込まないと無効になる。
 <Directory "/home/miyasaka/www">
 AllowOverride None
 Options Includes FollowSymLinks ExecCGI
 AddHandler cgi-script .cgi .pl
 Require all granted
 </Directory>
 
 | 
|  |  | 
|  | 
 |