最近はNginxばかりでしたが、久しぶりにApacheでWebサーバーを立ち上げた際にはまりました。
バーチャルホスト設定をすると403 Forbinddedが表示されます。
検索するとApache 2.4のFAQみたいで情報が山ほど見つかりました。
どの<Directory>ディレクティブが適用されるのか
Apacheが正常に起動すると表示される「It works!」
この段階ではhttpd.confに記述されている以下の設定が適用されます。
<Directory "/usr/local/www/apache24/data">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
バーチャルホストを含め、運用開始後にこのディレクトリを使うことは少なく、その場合にはhttpd.confの少し下に記述されている以下の設定が適用されます。
<Directory />
AllowOverride none
Require all denied
</Directory>
それに加えてApache 2.2までとはアクセス許可の記述方法が変わっているため、403 Forbinddedに悩まされる人が多かったようです。
バーチャルホスト実運用での<Directory>記述場所
バーチャルホスト環境で実際に運用する際は、新しくサイトを追加するたびに<VirtualHost>ディレクティブを追加していくため、なるべく短い方が理想です。
そのため、上記の<Directory>ディレクティブをhttpd-vhosts.confの(httpd.confでも好みで)最初にワイルドカードで書いておくと便利です。
/usr/local/etc/apache24/extra/httpd-vhosts.conf
<Directory /home/*/public_html>
AddHandler cgi-script .cgi
Options FollowSymlinks Includes
AllowOverride All
Require all granted
</Directory>