Apache2を使用してDocumentRootディレクトリ以外のディレクトリからコンテンツを提供する
この設定は、Apache2ウェブサーバーを使用して、DocumentRootディレクトリ以外のディレクトリからコンテンツを提供する基本的な例を示します。シンプルなバーチャルホストの設定から始めましょう。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<VirtualHost>
上記の VirtualHost 設定は DocumentRoot ディレクトリからコンテンツを提供します。設定を確認するために、基本的なページを作成しましょう:
echo "Serving content from /var/www/html" > /var/www/html/index.html
利用可能なウェブサーバーにアクセスすることで、以下のコンテンツを取得します:
curl http://localhost/
Serving content from /var/www/html
指定されたHTMLドキュメントは、DocumentRootディレクトリ/var/www/htmlから読み込まれました。
他のディレクトリのコンテンツも提供したい場合、DocumentRoot ディレクトリ /var/www/html に加えて、追加の alias を作成できます。以下は、/var/www/html に加え /opt/www/ のコンテンツも提供するための新しい VirtualHost 設定ファイルで、URL エイリアス サフィックス /opt/ を使用しています。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias "/opt/" "/opt/www/"
<Directory "/opt/www/">
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<VirtualHost>
新しい設定を保存し、Apacheウェブサーバーを再ロードしてください:
service apache2 reload
[ ok ] Reloading web server: apache2.
次に、/opt/www/エイリアスディレクトリ内にシンプルなページを作成します:
echo "Serving content from /opt/www/" > /opt/www/index.html
エイリアスURLサフィックス/opt/を使用してウェブサーバーにアクセスすると、/opt/wwwディレクトリからコンテンツが提供されます:
curl http://localhost/opt/
Serving content from /opt/www/
トラブルシューティング
404 Not Foundは通常、存在しないコンテンツにアクセスしようとしているか、間違ったURLを提供していることを意味します。URLの末尾にある/に注意してください。http://localhost/optとhttp://localhost/opt/は二つの異なるURLです。URLに末尾の/を含めたくない場合は、上記のAliasディレクティブから末尾の/を二つとも削除する必要があります。
AH01630: サーバーの設定によってクライアントが拒否されました エラーログは、不正に構成されたアクセス制御によってアクセスが拒否されたことを示しています。Apacheウェブサーバーのバージョンが2.4未満の場合は、アクセス制御を次のように変更する必要があるかもしれません:
<Directory "/opt/www/">
Order allow,deny
Allow from all
</Directory>