さくらのVPS上で、Drupal7のお試しサイトを弄っているとき、クリーンURLが有効になっていないことに気がついたので、設定を見直してみました。
管理メニューから環境設定→クリーンURLをクリックしたのですが、いつもの「クリーンURLを有効にする」チェックボックスが現れません。「設定を保存」ボタンのラベルが、「クリーンURLテストの実行」になっているので、取り敢えずこのボタンを押してテストを実行してみましたが、失敗です。
クリーンURLを有効にするための3つのチェックポイント
クリーンURLの設定というのは、WordPressでいえばパーマリンク設定に当たります。例えばwww.hogehoge.jp/?q=userというURLがwww.hogehoge.jp/userという風に読みやすいURLに変換することをいいます。これらの機能を使うには、Apacheのmod_rewriteが有効になっていることが必要です。そこで、先ずは、次の3点から確認してみました。
・ mod_rewriteが有効になっていなければ端末から次のコマンドを実行
sudo a2enmod rewrite
・ .htaccessファイル中の次の4行がコメントアウトになっていないかを確認。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]
・ モジュール管理画面で、Pathモジュールのチェックボックスが外れていないかどうかの確認。
apache2.confファイルへの追記で正常化
以上の3つのチェックポイントを確認しましたが、それでもだめだったので、次に/etc/apache2フォルダ中のapache2.confファイルを疑ってみました。
apache2.confファイルを弄った覚えはありませんが、念のため、次の3行を追記しました。
<Directory /home/www/drupal/>
AllowOverride All
</Directory>
ファイルを保存した後、次のコマンドで設定を反映させます。
sudo service apache2 reload
ここで、もう一度、クリーンURLの設定画面に行くと、いつもの「クリーンURLを有効にする」チェックボックスが現れました。
これで、いつものようにクリーンURLの設定のオン・オフができるようになりました。
ただ、apache2.confファイルに追記した内容は、セキュリティやメンテナンス性を考えて、本来は/etc/apache2/site-enabled内のバーチャルホスト設定ファイルに書き込むべきものだろうと思います。