Apacheサーバー設定のトラブルシューティング




client denied by server configurationエラー (2018-09-02)

Apache のエラーログで「client denied by server configuration:」と出た時の対処法。放っておいても問題はなさそうだが、Apacheのエラーログを見やすくしたいため細かいエラーを徹底的になくしていく。
バーチャルホストでの運営なので、バーチャルホストの設定ファイル、virtualhost.conf を開く。

「Require all granted」を記述するする。
<VirtualHost *:80>
        ServerName hogehoge.xxxxxxxxx.com
        DocumentRoot /somewhere/hogehoge
        &lt;Directory "/somewhere/hogehoge">
            Require all granted
        &lt;/Directory>
<VirtualHost>


Apache 再起動。
/etc/rc.d/init.d/httpd restart

これで解決したと思ったが、今度は下記のようなエラーが出てしまった。
configuration error: couldn't perform authentication. AuthType not set!:

「Require all granted」はApache2.4系の書き方のようだ。
でApacheのバージョンを確認してみる。
httpd -v

やはり2.4以前のバージョンがインストールされていた。
この場合「Require all granted」ではなく、「Order allow,deny」「Allow from all」と書くようだ。
なので、最終的な書き方は次のようになる。
<VirtualHost *:80>
        ServerName hogehoge.xxxxxxxxx.com
        DocumentRoot /somewhere/hogehoge
        &lt;Directory "/somewhere/hogehoge">
            Order allow,deny
            Allow from all
        &lt;/Directory>
</VirtualHost>


これで解決!と思ったが、またエラーが出てしまった。
client denied by server configuration:



バーチャルホストで.htaccessが無視される? (2018-09-02)

「バーチャルホストのドメインでアクセス」した場合と、「メインドメイン + フォルダを指定してアクセス」した場合の動作が異なることを発見した。
どうも、バーチャルホストでのアクセスだと.htaccessが読み込まれないようであった。
原因は、「AllowOverride None」を追記してしまったこと。下記のように「AllowOverride All」としたら、.htaccessの設定がちゃんと反映されるようになった。
<VirtualHost *:80&gt;
        ServerName hoge.xxxxxxxxxxx.com
        DocumentRoot /home/xxxxxxxxxxx/hoge
        &lt;Directory "/home/xxxxxxxxxxx/hoge"&gt;
             Options FollowSymLinks
             AllowOverride All
             Order deny,allow
             Allow from all
        &lt;/Directory&gt;
</VirtualHost&gt;




Directory index forbidden by Options directiveエラーとFile does not exist favicon.ico (2018-09-05)

Apacheで発生したアクセスエラーログ。

Directory index forbidden by Options directive: /xxxx/

アクセスされたフォルダに、index.htmlが置かれていないために発生するようだ。
このフォルダにはアクセスされることを想定していないため、空のindex.htmlを置いて解決する。
しかし今度は、ブラウザがfaviconをリクエストするために下記のようなエラーが発生してしまった。

File does not exist: /xxxx/favicon.ico, referer: http://xxxx.com/

空のfaviconを作成して、index.htmlと同じディレクトリにおけば解決する。

cat /dev/null > favicon.ico