お客さんのサイトのテストサイトを自分のところで運用しています。テストサイトを運用しているのはさくらインターネットのVPSなのですが、このサーバーのOSが古くなってきたので別のサーバーに移したいと考えました。移行先はとりあえず、社内のQNAPのDockerコンテナにします。
大量のHTMLファイルを新しいサーバーにコピーします。このサイトは構成が古く基本はHTMLファイルのみで動いています。コピーすれば移行完了と思いきや・・・・。
そう言えば、SSIを使っていたのでした。共通のメニューやフッタが表示できません。Webブラウザでソースを見てみると、
<!--#include virtual="/include/gnavi.html" -->
がそのまま出力されて、読み込むべきファイルを展開していません。
「apache ssi 有効」でGoogleさんに聞いて出てきたサイトによると、まず疑うのはSSIの設定している.htaccessを確認です。
Options Includes
でSSLを有効になっていることを確認します。
これは既に設定されていました。
もしかしたら、.htaccessが有効になっていないかも確認します。次に疑うのはhttpd.confでしょうか?
AllowOverride All
で有効になっていました。ファイルの改行コードがLFにしたりしました。念のためにHTTPDコンテナを再起動してみます。
それでも動きません。
.htaccessにrewriteの設定もしていましたので、リダイレクトができているかを確認します。
リダイレクトできていません。もしかしたら・・・・。
httpd -M
をコンテナにアクセスして叩いてみると、mod_rewriteとmod_includeが出てきません。必要なモジュールを有効になっていないようです。そこでhttpd.conf、
LoadModule include_module modules/mod_include.so
LoadModule rewrite_module modules/mod_rewrite.so
の2行のコメント(#)を外してモジュールを有効にします。そしてApacheを再起動します。
無事にSSIが有効になって、メニューとフッタがインクルードファイルから展開して表示できました。単純にモジュールが有効になっていなかったの原因でした。
以上、今回の教訓としては、
という話しでした。